home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 4 Drivers / 04-Drivers.zip / scsiopt2.zip / scsiopt.h < prev    next >
C/C++ Source or Header  |  1997-12-12  |  6KB  |  206 lines

  1. /*
  2.  * $Source: E:/source/driver/perf/RCS/scsiopt.h,v $
  3.  * $Revision: 1.3 $
  4.  * $Date: 1997/12/11 01:49:12 $
  5.  * $Locker:  $
  6.  *
  7.  * Types and Constants
  8.  *
  9.  * $Log: scsiopt.h,v $
  10.  * Revision 1.3  1997/12/11 01:49:12  vitus
  11.  * - added DISPLAYBUFFER_SIZE (swappable memory size)
  12.  *
  13.  * Revision 1.2  1997/12/06 00:41:43  vitus
  14.  * - enabled support for WatCom C
  15.  *
  16.  * Revision 1.1  1997/10/28 02:08:27  vitus
  17.  * Initial revision
  18.  * ----------------------------------------
  19.  * Author: Vitus Jensen, 2:2474/424, 1997
  20.  */
  21.  
  22.  
  23. #define MAX_UNITS        32
  24. #define MAX_DEVICETABLE_SIZE    (1*1024)
  25. #define MAX_MODE_DATA        250        /* max. requested from device
  26.                            via MODE SENSE(6) */
  27. #define DISPLAYBUFFER_SIZE    (8*1024)
  28.  
  29. #define DRIVERFLAGS        0
  30. #define DRIVERCLASS_ADD        1
  31.  
  32.  
  33. #if !defined(DEBUG)
  34. # define PRIVATE    static
  35. #else
  36. # define PRIVATE
  37. #endif
  38. #define PUBLIC
  39.  
  40. #define _intext     _based(_segname("_CODE"))
  41. #define _ininit     _based(_segname("INITDATA"))
  42. #define _inconst     _based(_segname("_CONST"))
  43. #define    _inldata    _based(_segname("LIBDATA"))
  44.  
  45.  
  46. #define MK_FP(sel,off)    MAKEP(sel,off)
  47. #define FP_SEL(fp)    SELECTOROF(fp)
  48. #define FP_OFF(fp)    OFFSETOF(fp)
  49.  
  50.  
  51. #if defined(_MSC_VER)
  52. # define SAVE_IF()    _asm{pushf}
  53. # define RESTORE_IF()    _asm{popf}
  54. # define DISABLE()    _disable()
  55. # define ENABLE()    _enable()
  56. # define SAVE_REGS()    _asm{_asm pusha _asm push ds _asm push es}
  57. # define RESTORE_REGS()    _asm{_asm pop es _asm pop ds _asm popa}
  58.  
  59. #define _Cdecl        cdecl
  60.  
  61. #elif defined(__WATCOMC__)
  62. void    SAVE_IF(void);
  63. void    RESTORE_IF(void);
  64. void    DISABLE(void);
  65. void    ENABLE(void);
  66. void    SAVE_REGS(void);
  67. void    RESTORE_REGS(void);
  68.  
  69. #pragma aux SAVE_IF = "pushf";
  70. #pragma aux RESTORE_IF = "popf";
  71. #pragma aux DISABLE = "cli";
  72. #pragma aux ENABLE = "sti";
  73. #pragma aux SAVE_REGS =    \
  74.     "pusha",    \
  75.     "push ds",    \
  76.     "push es"
  77. #pragma aux RESTORE_REGS =    \
  78.     "pop es",    \
  79.     "pop ds",    \
  80.     "popa"
  81. #endif
  82.  
  83.  
  84.  
  85. /* Defined in DDK but for some reason not included */
  86. typedef UCHAR NEAR *NPUCHAR;
  87.  
  88. /*
  89.  * Missing in DDK (not in newest, but not defined
  90.  * in this way)
  91.  */
  92. #undef STATUS_ERR_UNKCMD
  93. #define STDEV            0x4000        /* driver defined error code */
  94. #define STATUS_ERR_UNKUNIT    (STERR | STDON | 0x01)
  95. #define STATUS_ERR_NOTREADY    (STERR | STDON | 0x02)
  96. #define STATUS_ERR_UNKCMD    (STERR | STDON | 0x03)
  97. #define STATUS_ERR_CRC        (STERR | STDON | 0x04)
  98. #define STATUS_ERR_REQLEN    (STERR | STDON | 0x05)
  99. #define STATUS_ERR_SEEK        (STERR | STDON | 0x06)
  100. #define STATUS_ERR_UNKMEDIA    (STERR | STDON | 0x07)
  101. #define STATUS_ERR_NOTFOUND    (STERR | STDON | 0x08)
  102. #define STATUS_ERR_PAPEROUT    (STERR | STDON | 0x09)
  103. #define STATUS_ERR_WRFAULT    (STERR | STDON | 0x0A)
  104. #define STATUS_ERR_RDFAULT    (STERR | STDON | 0x0B)
  105. #define STATUS_ERR_GENERR    (STERR | STDON | 0x0C)
  106. #define STATUS_ERR_CHGDISK    (STERR | STDON | 0x0D)
  107. #define STATUS_ERR_UNCERTAIN    (STERR | STDON | 0x10)
  108. #define STATUS_ERR_INTERRUPTED    (STERR | STDON | 0x11)
  109. #define STATUS_ERR_NOMONITOR    (STERR | STDON | 0x12)
  110. #define STATUS_ERR_INVPARAM    (STERR | STDON | 0x13)
  111. #define STATUS_ERR_DEVINUSE    (STERR | STDON | 0x14)
  112. #define STATUS_ERR_INITFAILED    (STERR | STDON | 0x15)
  113.  
  114.  
  115.  
  116.  
  117. /*
  118.  * All information regarding a unit are collected
  119.  * into a single structure.
  120.  * If we are a real filter (like DSKSleep) we would have
  121.  * a global table of this kind.
  122.  */
  123. typedef struct _DEVICE {
  124.  
  125.     /* How to access this device... */
  126.  
  127.     void    (FAR _Cdecl * pADDEntry)(PIORB);
  128.     USHORT    hdADDUnit;            /* ADD handle of this unit */
  129.     USHORT    hdFilter;            /* previous filter (if any) */
  130.  
  131.     USHORT    iAdapter;            /* global index */
  132.     USHORT    iUnit;                /* per adapter index */
  133.  
  134.     /* more... */
  135.  
  136. } DEVICE, NEAR * NPDEVICE, FAR * PDEVICE;
  137.  
  138.  
  139.  
  140.  
  141. /*
  142.  *    Debugging macros
  143.  */
  144. #if defined(DEBUG)
  145. # define DEBMSG(msg)        dprintf((char _far *)msg)
  146. # define DEBMSG1(msg,p1)    dprintf((char _far *)msg,p1)
  147. # define DEBMSG2(msg,p1,p2)    dprintf((char _far *)msg,p1,p2)
  148. # define DEBMSG3(msg,p1,p2,p3)    dprintf((char _far *)msg,p1,p2,p3)
  149. # define DEBMSG4(msg,p1,p2,p3,p4) dprintf((char _far *)msg,p1,p2,p3,p4)
  150. # define ERRMSG(msg)        dprintf((char _far *)msg); _asm {int 3}
  151. # define ERRMSG1(msg,p1)    dprintf((char _far *)msg,p1); _asm {int 3}
  152. # define ERRMSG2(msg,p1,p2)    dprintf((char _far *)msg,p1,p2); _asm {int 3}
  153. # define ERRMSG3(msg,p1,p2,p3)    dprintf((char _far *)msg,p1,p2,p3); _asm {int 3}
  154. # define ERRMSG4(msg,p1,p2,p3,p4) dprintf((char _far *)msg,p1,p2,p3,p4); _asm {int 3}
  155.  
  156. #else
  157. # define DEBMSG(msg)
  158. # define DEBMSG1(msg,p1)
  159. # define DEBMSG2(msg,p1,p2)
  160. # define DEBMSG3(msg,p1,p2,p3)
  161. # define DEBMSG4(msg,p1,p2,p3,p4)
  162. # define ERRMSG(msg)
  163. # define ERRMSG1(msg,p1)
  164. # define ERRMSG2(msg,p1,p2)
  165. # define ERRMSG3(msg,p1,p2,p3)
  166. # define ERRMSG4(msg,p1,p2,p3,p4)
  167. #endif /*DEBUG*/
  168.  
  169.  
  170.  
  171. #if defined(INFORM)
  172. # define INFMSG(msg)        dprintf((char _far *)msg);
  173. # define INFMSG1(msg,p1)    dprintf((char _far *)msg,p1);
  174. # define INFMSG2(msg,p1,p2)    dprintf((char _far *)msg,p1,p2);
  175. # define INFMSG3(msg,p1,p2,p3)    dprintf((char _far *)msg,p1,p2,p3);
  176. # define INFMSG4(msg,p1,p2,p3,p4)    dprintf((char _far *)msg,p1,p2,p3,p4);
  177.  
  178. #else
  179. # define INFMSG(msg)
  180. # define INFMSG1(msg,p1)
  181. # define INFMSG2(msg,p1,p2)
  182. # define INFMSG3(msg,p1,p2,p3)
  183. # define INFMSG4(msg,p1,p2,p3,p4)
  184. #endif
  185.  
  186.  
  187.  
  188.  
  189. #if defined(DEBUG)
  190. # if defined(_MSC_VER)
  191. #  define DBSTOP()        _asm {int 3}
  192. # else
  193. void DBSTOP(void);
  194. #  pragma aux DBSTOP = "int 3";
  195. # endif
  196. #else
  197. # define DBSTOP()
  198. #endif
  199.  
  200.  
  201. #if defined(DEBUG)
  202. # define DO(cmd)        cmd
  203. #else
  204. # define DO(cmd)
  205. #endif
  206.