home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / MISC / scsiutil.lzh / SCSIUTIL / aux.c next >
Text File  |  1996-10-12  |  2KB  |  64 lines

  1.  
  2. #asm
  3. **  _gs_dcmd()
  4. **  _ss_dcmd()
  5. **
  6. **     'C' bindings for direct command to a device.
  7. **
  8. *
  9. *  Function:  _gs_dcmd - get information from a device via direct command
  10. *             _ss_dcmd - send information to a device via direct command
  11. *
  12. *  Syntax: int _gs_dcmd( pn, cmd )
  13. *          int pn;      /* path number to the device as returned by open() */
  14. *          void *cmd;   /* the direct command to be performed */
  15. *
  16. *          int _ss_dcmd( pn, cmd )
  17. *          int pn;      /* path number to the device as returned by open() */
  18. *          void *cmd;   /* the direct command to be performed */
  19. *
  20. *  Returns:  0 if all went well
  21. *           -1 on error, errno set to error number from driver
  22. *
  23. *  Description:
  24. *        This is a mechanism where by a direct command can be issued to
  25. *  a device.  The type of device of course determines the requirements of the
  26. *  command being sent.  Refer to the documentation concerning the driver
  27. *  for the device to be communicated with.
  28. *
  29. *  Caveats:
  30. *       Garbage in.... Garbage (possibly crash) out
  31. *
  32.  
  33. _ss_dcmd:
  34.  link a5,#0
  35.  move.l a0,-(sp)
  36.  move.l d1,a0 the command pointer
  37.  move.l #SS_DCmd,d1 direct command code
  38.  os9 I$SetStt
  39.   bcs.s _gs_dcmderr
  40.  clr.l d0 return all ok
  41.   bra.s _gs_dcmdex
  42.  
  43. _gs_dcmd:
  44.  link a5,#0
  45.  move.l a0,-(sp)
  46.  move.l d1,a0 the command pointer
  47.  move.l #SS_DCmd,d1 direct command code
  48.  os9 I$GetStt
  49.   bcs.s _gs_dcmderr
  50.  clr.l d0 return all ok
  51.   bra.s _gs_dcmdex
  52.  
  53. * common code for both calls
  54. _gs_dcmderr
  55.  move.l #-1,d0 set error flag for return
  56.  move.l d1,errno(a6) set errno to value from driver
  57. _gs_dcmdex
  58.  move.l (sp)+,a0
  59.  unlk a5
  60.  rts
  61.  
  62. #endasm
  63.  
  64.