home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer) / NeXT_Developer-3.3.iso / NextDeveloper / Examples / DriverKit / AMDPCSCSIDriver / AMDPCSCSIDriver_reloc.tproj / AMD_Private.h < prev    next >
Encoding:
Text File  |  1995-02-10  |  2.9 KB  |  105 lines

  1. /*     Copyright (c) 1994 NeXT Computer, Inc.  All rights reserved. 
  2.  *
  3.  * AMD_SCSI.h - hardware-independent methods for AMD PCI SCSI driver.
  4.  *
  5.  * These methods are implemented in AMD_SCSI.m.
  6.  *
  7.  * HISTORY
  8.  * 21 Oct 94    Doug Mitchell at NeXT
  9.  *      Created. 
  10.  */
  11.  
  12. #import "AMD_SCSI.h"
  13. #import "AMD_Types.h"
  14.  
  15. @interface AMD_SCSI(Private)
  16.  
  17. /*
  18.  * Send a command to the controller thread, and wait for its completion.
  19.  * Only invoked by publicly exported methods in SCSIController.m.
  20.  */
  21. - (IOReturn)executeCmdBuf    : (commandBuf *)cmdBuf;
  22.  
  23. /*
  24.  * Abort all active and disconnected commands with specified status. No 
  25.  * hardware action. Currently used by threadResetBus and during processing
  26.  * of a CO_Abort command.
  27.  */
  28. - (void)swAbort : (sc_status_t)status;
  29.  
  30. /*
  31.  * I/O thread version of resetSCSIBus and executeRequest.
  32.  */
  33. - (void)threadResetBus         : (const char *)reason;
  34. - (void)threadExecuteRequest    : (commandBuf *)cmdBuf;
  35.  
  36. /*
  37.  * Methods called by other modules in this driver. 
  38.  */
  39.  
  40. /*
  41.  * Called when a transaction associated with cmdBuf is complete. Notify 
  42.  * waiting thread. If cmdBuf->scsiReq exists (i.e., this is not a reset
  43.  * or an abort), scsiReq->driverStatus must be valid. If cmdBuf is activeCmd,
  44.  * caller must remove from activeCmd.
  45.  */
  46. - (void)ioComplete        : (commandBuf *)cmdBuf;
  47.  
  48. /*
  49.  * Generate autosense request for specified cmdBuf, place it 
  50.  * at head of pendingQ.
  51.  */
  52. - (void)generateAutoSense : (commandBuf *)cmdBuf;
  53.  
  54. /*
  55.  * I/O associated with activeCmd has disconnected. Place it on disconnectQ
  56.  * and enable another transaction.
  57.  */ 
  58. - (void)disconnect;
  59.  
  60. /*
  61.  * Specified target, lun, and queueTag is trying to reselect. If we have 
  62.  * a commandBuf for this TLQ nexus on disconnectQ, remove it, make it the
  63.  * current activeCmd, and return YES. Else return NO.
  64.  * A value of zero for queueTag indicates a nontagged command (zero is never
  65.  * used as the queue tag value for a tagged command).
  66.  */
  67. - (BOOL)reselect         : (unsigned char)target_id
  68.                     lun : (unsigned char)lun
  69.                queueTag : (unsigned char)queueTag;
  70.  
  71. /*
  72.  * Determine if activeArray[][], maxQueue[][], cmdQueueEnable, and a 
  73.  * command's target and lun show that it's OK to start processing cmdBuf.
  74.  * Returns YES if copacetic.
  75.  */
  76. - (BOOL)cmdBufOK : (commandBuf *)cmdBuf;
  77.         
  78. /*
  79.  * The bus has gone free. Start up commands in pendingQ, if any.
  80.  */
  81. - (void)busFree;
  82.  
  83. /*
  84.  * Abort activeCmd (if any) and any disconnected I/Os (if any) and reset 
  85.  * the bus due to gross hardware failure.
  86.  * If activeCmd is valid, its scsiReq->driverStatus will be set to 'status'.
  87.  */
  88. - (void)hwAbort         : (sc_status_t)status
  89.               reason : (const char *)reason;
  90.  
  91. /*
  92.  * Called by chip level to indicate that a command has gone out to the 
  93.  * hardware.
  94.  */
  95. - (void)activateCommand : (commandBuf *)cmdBuf;
  96.  
  97. /*
  98.  * Remove specified cmdBuf from "active" status. Update activeArray,
  99.  * activeCount, and unschedule pending timer.
  100.  */
  101. - (void)deactivateCmd : (commandBuf *)cmdBuf;
  102.  
  103. @end
  104.  
  105.