ssgh.inc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. type
  2. Psg_iovec = ^sg_iovec;
  3. sg_iovec = record
  4. iov_base : pointer;
  5. iov_len : size_t;
  6. end;
  7. sg_iovec_t = sg_iovec;
  8. Psg_iovec_t = ^sg_iovec_t;
  9. Psg_io_hdr = ^sg_io_hdr;
  10. sg_io_hdr = record
  11. interface_id : longint;
  12. dxfer_direction : longint;
  13. cmd_len : byte;
  14. mx_sb_len : byte;
  15. iovec_count : word;
  16. dxfer_len : dword;
  17. dxferp : pointer;
  18. cmdp : Pbyte;
  19. sbp : Pbyte;
  20. timeout : dword;
  21. flags : dword;
  22. pack_id : longint;
  23. usr_ptr : pointer;
  24. status : byte;
  25. masked_status : byte;
  26. msg_status : byte;
  27. sb_len_wr : byte;
  28. host_status : word;
  29. driver_status : word;
  30. resid : longint;
  31. duration : dword;
  32. info : dword;
  33. end;
  34. sg_io_hdr_t = sg_io_hdr;
  35. Psg_io_hdr_t = ^sg_io_hdr_t;
  36. const
  37. SG_DXFER_NONE = -(1);
  38. SG_DXFER_TO_DEV = -(2);
  39. SG_DXFER_FROM_DEV = -(3);
  40. SG_DXFER_TO_FROM_DEV = -(4);
  41. SG_FLAG_DIRECT_IO = 1;
  42. SG_FLAG_LUN_INHIBIT = 2;
  43. SG_FLAG_NO_DXFER = $10000;
  44. SG_INFO_OK_MASK = $1;
  45. SG_INFO_OK = $0;
  46. SG_INFO_CHECK = $1;
  47. SG_INFO_DIRECT_IO_MASK = $6;
  48. SG_INFO_INDIRECT_IO = $0;
  49. SG_INFO_DIRECT_IO = $2;
  50. SG_INFO_MIXED_IO = $4;
  51. type
  52. Psg_scsi_id = ^sg_scsi_id;
  53. sg_scsi_id = record
  54. host_no : longint;
  55. channel : longint;
  56. scsi_id : longint;
  57. lun : longint;
  58. scsi_type : longint;
  59. h_cmd_per_lun : smallint;
  60. d_queue_depth : smallint;
  61. unused : array[0..1] of longint;
  62. end;
  63. Psg_req_info = ^sg_req_info;
  64. sg_req_info = record
  65. req_state : char;
  66. orphan : char;
  67. sg_io_owned : char;
  68. problem : char;
  69. pack_id : longint;
  70. usr_ptr : pointer;
  71. duration : dword;
  72. unused : longint;
  73. end;
  74. sg_req_info_t = sg_req_info;
  75. Psg_req_info_t = ^sg_req_info_t;
  76. const
  77. SG_EMULATED_HOST = $2203;
  78. SG_SET_TRANSFORM = $2204;
  79. SG_GET_TRANSFORM = $2205;
  80. SG_SET_RESERVED_SIZE = $2275;
  81. SG_GET_RESERVED_SIZE = $2272;
  82. SG_GET_SCSI_ID = $2276;
  83. SG_SET_FORCE_LOW_DMA = $2279;
  84. SG_GET_LOW_DMA = $227a;
  85. SG_SET_FORCE_PACK_ID = $227b;
  86. SG_GET_PACK_ID = $227c;
  87. SG_GET_NUM_WAITING = $227d;
  88. SG_GET_SG_TABLESIZE = $227F;
  89. SG_GET_VERSION_NUM = $2282;
  90. SG_SCSI_RESET = $2284;
  91. SG_SCSI_RESET_NOTHING = 0;
  92. SG_SCSI_RESET_DEVICE = 1;
  93. SG_SCSI_RESET_BUS = 2;
  94. SG_SCSI_RESET_HOST = 3;
  95. SG_IO = $2285;
  96. SG_GET_REQUEST_TABLE = $2286;
  97. SG_SET_KEEP_ORPHAN = $2287;
  98. SG_GET_KEEP_ORPHAN = $2288;
  99. SG_SCATTER_SZ = 8 * 4096;
  100. SG_DEFAULT_RETRIES = 1;
  101. SG_DEF_FORCE_LOW_DMA = 0;
  102. SG_DEF_FORCE_PACK_ID = 0;
  103. SG_DEF_KEEP_ORPHAN = 0;
  104. SG_DEF_RESERVED_SIZE = SG_SCATTER_SZ;
  105. SG_MAX_QUEUE = 16;
  106. SG_BIG_BUFF = SG_DEF_RESERVED_SIZE;
  107. const
  108. SG_MAX_SENSE = 16;
  109. type
  110. Psg_header = ^sg_header;
  111. sg_header = record
  112. pack_len : longint;
  113. reply_len : longint;
  114. pack_id : longint;
  115. result : longint;
  116. flag0 : cardinal;
  117. sense_buffer : array[0..(SG_MAX_SENSE)-1] of byte;
  118. end;
  119. const
  120. SG_SET_TIMEOUT = $2201;
  121. SG_GET_TIMEOUT = $2202;
  122. SG_GET_COMMAND_Q = $2270;
  123. SG_SET_COMMAND_Q = $2271;
  124. SG_SET_DEBUG = $227e;
  125. SG_NEXT_CMD_LEN = $2283;
  126. SG_DEFAULT_TIMEOUT = 60 * HZ;
  127. SG_DEF_COMMAND_Q = 0;
  128. SG_DEF_UNDERRUN_FLAG = 0;
  129. { ---------------------------------------------------------------------
  130. Borland compatibility types
  131. ---------------------------------------------------------------------}
  132. // Type