|
|
1.1 ! root 1: ! 2: /* Copyright (c) 1993 NeXT Computer, Inc. All rights reserved. ! 3: * ! 4: * SCSITape.h - Interface for SCSI Tape device class. ! 5: * ! 6: * HISTORY ! 7: * 31-Mar-93 Phillip Dibner at NeXT ! 8: * Created. ! 9: */ ! 10: ! 11: #import <driverkit/return.h> ! 12: #import <driverkit/scsiTypes.h> ! 13: #import <driverkit/generalFuncs.h> ! 14: #import <dev/scsireg.h> ! 15: #import <machkit/NXLock.h> ! 16: #import <objc/Protocol.h> ! 17: #import "SCSITapeTypes.h" ! 18: ! 19: ! 20: @interface SCSITape: IODevice ! 21: { ! 22: @private ! 23: /* ! 24: * Configuration information ! 25: */ ! 26: id _controller; // the SCSIController object which does ! 27: // our SCSI transactions ! 28: u_char _target; // target/lun of this device ! 29: u_char _lun; ! 30: ! 31: int _majorDevNum; ! 32: ! 33: int _blockSize; ! 34: ! 35: /* ! 36: * Driver state ! 37: */ ! 38: esense_reply_t *_senseDataPtr; // for MTIOCGET ! 39: id _devLock; // NXLock for exclusive open ! 40: BOOL _isInitialized; // Object has been initialized ! 41: BOOL _devAcquired; // device reserved by some task ! 42: BOOL _didWrite; // last command was a write ! 43: BOOL _suppressIllegalLength; // Suppress IL errors ! 44: BOOL _senseDataValid;// *_senseDataPtr from last command OK ! 45: BOOL _reservedTargetLun; // Controller has reserved t & l ! 46: BOOL _ignoreCheckCondition; // during Test Ready in open() ! 47: }; ! 48: ! 49: ! 50: /* Class methods */ ! 51: ! 52: + (BOOL)probe: deviceDescription; ! 53: + (IODeviceStyle) deviceStyle; ! 54: + (Protocol **) requiredProtocols; ! 55: ! 56: - (stInitReturn_t) initSCSITape: (int) stUnit ! 57: target: (u_char) stTarget ! 58: lun: (u_char) stLun ! 59: controller: stController ! 60: majorDeviceNumber: (int) major; ! 61: ! 62: - (int)target; ! 63: - (int)lun; ! 64: - controller; ! 65: - (BOOL) isInitialized; ! 66: - (BOOL) isFixedBlock; ! 67: - (BOOL) senseDataValid; ! 68: - (BOOL) didWrite; ! 69: - forceSenseDataInvalid; ! 70: - (struct esense_reply *) senseDataPtr; ! 71: - (int) blockSize; ! 72: - (BOOL) suppressIllegalLength; ! 73: - setSuppressIllegalLength: (BOOL) condition; ! 74: - setReservedTargetLun: (BOOL) condition; ! 75: - (BOOL) ignoreCheckCondition; ! 76: - setIgnoreCheckCondition: (BOOL) condition; ! 77: - (BOOL) reservedTargetLun; ! 78: - (int) majorDevNum; ! 79: - (IOReturn) acquireDevice; ! 80: - (IOReturn) releaseDevice; ! 81: ! 82: - (sc_status_t) stInquiry: (inquiry_reply_t *) inquiryReply; ! 83: - (BOOL) stTestReady; ! 84: - (sc_status_t) stCloseFile; ! 85: - (sc_status_t) stRewind; ! 86: - (sc_status_t) requestSense: (esense_reply_t *)senseBuf; ! 87: - (sc_status_t) stModeSelect: (struct modesel_parms *) modeSelectParmsPtr; ! 88: - (sc_status_t) stModeSense: (struct modesel_parms *) modeSenseParmsPtr; ! 89: - (sc_status_t) executeMTOperation: (struct mtop *) mtopp; ! 90: - (IOReturn) setBlockSize: (int) blockSize; ! 91: - (sc_status_t) executeRequest: (IOSCSIRequest *)scsiReq ! 92: buffer:(void *) buffer ! 93: client:(vm_task_t) client ! 94: senseBuf:(esense_reply_t *) senseBuf; ! 95: ! 96: @end ! 97: ! 98:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.