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

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

/* 	Copyright (c) 1991 NeXT Computer, Inc.  All rights reserved. 
 *
 * IODiskPartition.h - interface for NeXT-style LogicalDisk.
 *
 * HISTORY
 * 01-May-91    Doug Mitchell at NeXT
 *      Created.
 *
 *
 * This IOLogicalDisk class handles all NeXT/Unix File system specific 
 * operations pertaining to a physical disk.
 *
 * For a given physical disk, there are two types of DiskObjects:
 *
 * -- The physical disk. This is a subclass of DiskObject like SCSIDisk.
 *    I/O to the Unix "live partition" is performed directly on the
 *    physical disk, as are device-specific ioctl's. 
 *
 * -- IODiskPartition partition instances. There is one of these per valid 
 *    partition in physicalDisk's label. There is always at least one 
 *    IODiskPartition partition, corresponding to partition 0, even if 
 *    there is no valid label or if the label has no partition 0. Common 
 *    ioctl-type operations like eject are performed on IODiskPartition
 *    partitions; this allows common error checking before (possibly) 
 *    passing the method on to device-specific code. All normal Unix 
 *    reads and writes (other than thru the live partition) are performed 
 *    on an IODiskPartition partition.
 *
 *    Certain operations result in freeing all IODiskPartition partitions 
 *    other than partition 0. These operations are: eject, writeLabel, and
 *    setFormatted. Each of these force us to discard our current partition
 *    state since they basically obliterate the current label. All of these
 *    have the following restrictions:
 *
 *	-- they must be performed on partition 0, since all other 
 *	   IODiskPartition partitions wil be freed.
 *	-- No block devices can be open. (Open block devices represent open
 *  	   file systems, for which these operations are catastrophic).
 *	-- No other IODiskPartition partitions may be open. 
 */

#import <driverkit/IOLogicalDisk.h>
#import <bsd/dev/disk_label.h>
#ifdef	KERNEL
#import <driverkit/kernelDiskMethods.h>
#import <bsd/dev/ldd.h>
#endif

/*
 * Public NXDisk methods.
 */
@protocol IODiskPartitionExported

/*
 * Read disk label.
 */
- (IOReturn) readLabel		: (out disk_label_t *)label_p;

/*
 * Write disk label.
 */
- (IOReturn) writeLabel		: (in disk_label_t *)label_p;

/*
 * Get/set "device open" flags.
 */
- (BOOL)isBlockDeviceOpen;
- (void)setBlockDeviceOpen	: (BOOL)openFlag;
- (BOOL)isRawDeviceOpen;
- (void)setRawDeviceOpen	: (BOOL)openFlag;

@end

@interface IODiskPartition:IOLogicalDisk <IODiskPartitionExported>

{
@private
	int 		_partition;		/* like 3 LSB's of the old*/
						/* UNIX minor number*/

	BOOL		_labelValid;		/* label is valid*/
	BOOL		_blockDeviceOpen;	/* block device is open*/
	BOOL		_rawDeviceOpen;		/* raw device is open*/
	int		_IODiskPartition_reserved[4];
}

+ (IODeviceStyle)deviceStyle;
+ (Protocol **)requiredProtocols;

/*
 * Examine a physical disk; create necessary instances of NXDisk.
 * Returns non-nil if any instances were created. 
 */
+ (BOOL)probe : (id)deviceDescription;

/*
 * Free all attached logicalDisks.
 */
- free;

@end

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