home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / driverkit / IOSCSIController.h < prev    next >
Text File  |  1993-08-06  |  2KB  |  79 lines

  1. /*
  2.  * Copyright (c) 1991, 1992, 1993 NeXT Computer, Inc.
  3.  *
  4.  * Abstract superclass for SCSI controllers.
  5.  *
  6.  * HISTORY
  7.  *
  8.  * 25 June 1993 David E. Bohman at NeXT
  9.  *    Cleaned up some (made machine independent).
  10.  *
  11.  * 11/9/92    Brian Pinkerton at NeXT
  12.  *      Created.
  13.  */
  14.  
  15. #import <driverkit/IODirectDevice.h>
  16. #import <driverkit/return.h>
  17. #import <driverkit/scsiTypes.h>
  18.  
  19. @interface IOSCSIController : IODirectDevice<IOSCSIControllerExported>
  20. {
  21. @private
  22.     /*
  23.      * Target/lun reservation array. We reserve target SC_HOST_ID for
  24.      * ourself. We keep track of how many active devices are on the bus
  25.      * in _reserveCount.
  26.      */
  27.     id        _reserveArray[SCSI_NTARGETS][SCSI_NLUNS];
  28.     unsigned int    _reserveCount;
  29.     id        _reserveLock;     // NXSpinLock. Protects _reserveArray.
  30.     unsigned     _worstCaseAlign; // worst case DMA alignment.
  31.     int        _IOSCSIController_reserved[4];
  32. }
  33.  
  34. - initFromDeviceDescription    : deviceDescription;
  35.  
  36. - (unsigned int)numReserved;
  37.  
  38. - (IOReturn)getIntValues    : (unsigned *)parameterArray
  39.            forParameter : (IOParameterName)parameterName
  40.               count : (unsigned int *)count;
  41.     
  42. - (IOReturn)setIntValues    : (unsigned *)parameterArray
  43.            forParameter : (IOParameterName)parameterName
  44.               count : (unsigned int)count;
  45.  
  46. - (unsigned int) numQueueSamples;        /* simple statistics */
  47. - (unsigned int) sumQueueLengths;
  48. - (unsigned int) maxQueueLength;
  49.  
  50. - (void)resetStats;                /* zero the above counters */
  51.  
  52. /*
  53.  * Subclasses of SCSIController must implement the following two 
  54.  * methods of the SCSIControllerExported protocol. 
  55.  * SCSIController's versions of these return SR_IOST_INVALID.
  56.  *
  57.  * - (sc_status_t) executeRequest : (IOSCSIRequest *)scsiReq
  58.  *               buffer : (void *)buffer 
  59.  *               client : (vm_task_t)client;
  60.  *                   
  61.  * - (sc_status_t) resetSCSIBus;            
  62.  *
  63.  *
  64.  * May optionally be overridden by subclass.
  65.  *
  66.  * - (unsigned) maxTransfer;
  67.  * - (void)getDMAAlignment        : (IODMAAlignment *)alignment;
  68.  */
  69.  
  70. @end
  71.  
  72. #define IO_IS_A_SCSI_CONTROLLER        "IOIsASCSIController"
  73. #define IO_SCSI_CONTROLLER_STATS    "IOSCSIControllerStatistics"
  74.  
  75. #define IO_SCSI_CONTROLLER_STAT_ARRAY_SIZE    3
  76. #define IO_SCSI_CONTROLLER_MAX_QUEUE_LENGTH    0
  77. #define IO_SCSI_CONTROLLER_QUEUE_SAMPLES    1
  78. #define IO_SCSI_CONTROLLER_QUEUE_TOTAL        2
  79.