ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.N.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/driverkit/IOLogicalDisk.h

This is IOLogicalDisk.h in view mode; [Download] [Up]

/* 	Copyright (c) 1991 NeXT Computer, Inc.  All rights reserved. 
 *
 * IOLogicalDisk.h - Public interface for Logical Disk Object.
 *
 * HISTORY
 * 05-Mar-91    Doug Mitchell at NeXT
 *      Created. 
 *
 * IOLogicalDisk is an abstract superclass which conceptually overlays 
 * the IODiskDevice class and provides "logical partition" functionality. 
 * Unix File System I/O goes thru a subclass of IOLogicalDisk; other I/O 
 * usually goes thru a subclass of IODiskDevice (like SCSIDisk).
 *
 * The main functionality provided by an IOLogicalDisk is to map read and write
 * requests to a physical device which has diffferent physical 
 * characteristics (block size, offset of partitions, etc.) than the 
 * IOLogicalDisk.
 *
 * An IOLogicalDisk is always associated with an IODiskDevice which actually 
 * performs all of IOLogicalDisk's I/O; this IODiskDevice's id is kept in 
 * _physDevice. An IOLogicalDisk is always in the same task as its associated
 * _physDevice.
 * 
 * IODiskDevice's _logicalDisk instance variable is used to chain together all
 * of the IOLogicalDisks attached to a particular physDevice. In an 
 * IOLogicalDisk, logicalDisk points to the next IOLogicalDisk in a chain -
 * e.g., partition a's logicalDisk variable points to the IOLogicalDisk
 * instance for partition b. The chain is nil-terminated.
 */
 
#import <driverkit/return.h>
#import <driverkit/IODisk.h>
#ifdef	KERNEL
#import <mach/mach_interface.h>
#else
#import <mach/mach.h>
#endif

@interface IOLogicalDisk:IODisk <IODiskReadingAndWriting>

/*
 * Some notes on IODisk instance variables:
 *
 * -- The formatted flag is a don't care for LogicalDisk and its subclasses.
 *    This flag is only for use by other device-specific subclasses of 
 *    IODiskDevice.
 *
 * -- The removable flag is always a copy of a LogicalDisk's physicalDisk's
 *    removable flag. This is set in the connectToPhysicalDisk method.
 */
{
@private
	id		_physicalDisk;		/* a pointer to the
						 * IODiskDevice which actually
						 * does our work */
	unsigned	_partitionBase;		/* offset from start of
						 * physDevice in
						 * blocSize blocks */
	unsigned	_physicalBlockSize;	/* blockSize of physDevice,
						 * cached here for efficiency
						 */
	BOOL		_instanceOpen;
	int		_IOLogicalDisk_reserved[4];
}

/*
 * Other methods Implemented by IOLogicalDisk.
 */
/*
 * Determine if this LogicalDisk (or any other subsequent logical disks in the
 * _nextLogicalDisk list) are currently open. Returns 0 if none open, else
 * 1.
 */
- (BOOL)isOpen;

/*
 * Determine if any logical disks in the _physicalDisk's entire 
 * _nextLogicalDisk chain except for self are open.
 */
- (BOOL)isAnyOtherOpen;

/*
 * Free self and any objects in logicalDisk chain.
 */
- free;
	
/*
 * Open a connection to physical device.
 */
- (IOReturn)connectToPhysicalDisk : physicalDisk;

/*
 * Get/set local instance variables.
 */
- (void)setPartitionBase	: (unsigned)partBase;
- physicalDisk;
- (void)setPhysicalBlockSize 	: (unsigned)size;
- (u_int)physicalBlockSize;
- (BOOL)isInstanceOpen;
- (void)setInstanceOpen		: (BOOL)isOpen;

/*
 * Passed on to _physDevice.
 */
- (IOReturn)isDiskReady		: (BOOL)prompt;
  
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.