home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / kernex32.zip / mwdd_src.zip / 32bits / ext2-os2 / include / os2 / devhlp32.h < prev    next >
Text File  |  1997-03-22  |  43KB  |  842 lines

  1. //
  2. // $Header: D:/32bits/ext2-os2/include/os2/RCS/devhlp32.h,v 1.5 1997/03/15 18:10:17 Willm Exp Willm $
  3. //
  4.  
  5. // 32 bits OS/2 device driver and IFS support. Provides 32 bits kernel 
  6. // services (DevHelp) and utility functions to 32 bits OS/2 ring 0 code 
  7. // (device drivers and installable file system drivers).
  8. // Copyright (C) 1995, 1996, 1997  Matthieu WILLM (willm@ibm.net)
  9. //
  10. // This program is free software; you can redistribute it and/or modify
  11. // it under the terms of the GNU General Public License as published by
  12. // the Free Software Foundation; either version 2 of the License, or
  13. // (at your option) any later version.
  14. //
  15. // This program is distributed in the hope that it will be useful,
  16. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. // GNU General Public License for more details.
  19. //
  20. // You should have received a copy of the GNU General Public License
  21. // along with this program; if not, write to the Free Software
  22. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  
  24. #ifndef __DevHlp32_h
  25. #define __DevHlp32_h
  26.  
  27.  
  28. #ifndef __infoseg_h
  29. #define __infoseg_h
  30. #include <infoseg.h>
  31. #endif
  32.  
  33. #ifdef __IBMC__
  34. #include <stdarg.h>
  35. #else
  36. typedef char *va_list;
  37. #endif
  38.  
  39. #pragma pack(1)
  40. struct PageList {
  41.     unsigned long physaddr;
  42.     unsigned long size;
  43. };
  44. #pragma pack()
  45.  
  46. #pragma pack(1)
  47. struct ddtable {
  48.     USHORT reserved[3];
  49.     PTR16  idc_entry;
  50.     USHORT idc_ds;
  51. };
  52. #pragma pack()
  53.  
  54.  
  55. /**************************************************************************************/
  56. /*** mwdd32.sys exported entry points structure                                     ***/
  57. /**************************************************************************************/
  58. extern struct DevHelp32 DevHelp32;
  59.  
  60. #define DEVHELP32_MAGIC 0xDF3C4E07
  61. #define DEVHELP32_VERSION 7
  62.  
  63. struct DevHelp32 {
  64.     unsigned long magic;
  65.     unsigned long version;
  66.     union {
  67.         struct {
  68.             int  (*DH32ENTRY  DevHlp32_SaveMessage)(char *, int);
  69.             void (*DH32ENTRY  DevHlp32_InternalError)(char *, int);
  70.             int  (*DH32ENTRY  DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  71.             int  (*DH32ENTRY2 DevHlp32_VMFree)(void *);
  72.             int  (*DH32ENTRY  DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  73.             int  (*DH32ENTRY  DevHlp32_VMUnlock)(void *);
  74.             int  (*DH32ENTRY  DevHlp32_VirtToLin)(PTR16, void **);
  75.             int  (*DH32ENTRY  DevHlp32_ProcBlock)(unsigned long, long, short);
  76.             int  (*DH32ENTRY  DevHlp32_ProcRun)(unsigned long);
  77.             int  (*DH32ENTRY  DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  78.             int  (*DH32ENTRY  DevHlp32_Security)(unsigned long, void *);
  79.             void (*DH32ENTRY  DevHlp32_Yield)(void);
  80.             int  (*DH32ENTRY  DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  81.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  82.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  83.             long          (*DH32ENTRY atol) (const char *);
  84.             char *        (*DH32ENTRY strupr) (char *s);
  85.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  86.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  87.             long          (*DH32ENTRY strtol) (const char *, char **, int);
  88.         int (*DH32ENTRY  sec32_attach_ses)(void *);
  89.             int (*DH32ENTRY  DevHlp32_setIRQ)(unsigned short, unsigned short, unsigned short, unsigned short);
  90.             int (*DH32ENTRY2 DevHlp32_EOI)(unsigned short);
  91.             int (*DH32ENTRY  DevHlp32_UnSetIRQ)(unsigned short, unsigned short);
  92.             int (*DH32ENTRY  DevHlp32_PageListToLin)(unsigned long, struct PageList *, void **);
  93.             int (*DH32ENTRY  DevHlp32_AllocGDTSelector)(unsigned short *, int);
  94.             int (*DH32ENTRY2 DevHlp32_FreeGDTSelector)(unsigned short);
  95.             int (*DH32ENTRY  DevHlp32_AttachDD)(char *, struct ddtable *);
  96.             int (*DH32ENTRY  DevHlp32_GetDosVar)(int, PTR16 *, int);
  97.         int (*DH32ENTRY  DevHlp32_VerifyAccess)(PTR16, unsigned short, int);
  98.         int (*DH32ENTRY  DevHlp32_CloseEventSem)(unsigned long);
  99.         int (*DH32ENTRY  DevHlp32_OpenEventSem)(unsigned long);
  100.         int (*DH32ENTRY  DevHlp32_PostEventSem)(unsigned long);
  101.         int (*DH32ENTRY  DevHlp32_ResetEventSem)(unsigned long, int*);
  102.         } version_7;
  103.         struct {
  104.             int  (*DH32ENTRY  DevHlp32_SaveMessage)(char *, int);
  105.             void (*DH32ENTRY  DevHlp32_InternalError)(char *, int);
  106.             int  (*DH32ENTRY  DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  107.             int  (*DH32ENTRY2 DevHlp32_VMFree)(void *);
  108.             int  (*DH32ENTRY  DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  109.             int  (*DH32ENTRY  DevHlp32_VMUnlock)(void *);
  110.             int  (*DH32ENTRY  DevHlp32_VirtToLin)(PTR16, void **);
  111.             int  (*DH32ENTRY  DevHlp32_ProcBlock)(unsigned long, long, short);
  112.             int  (*DH32ENTRY  DevHlp32_ProcRun)(unsigned long);
  113.             int  (*DH32ENTRY  DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  114.             int  (*DH32ENTRY  DevHlp32_Security)(unsigned long, void *);
  115.             void (*DH32ENTRY  DevHlp32_Yield)(void);
  116.             int  (*DH32ENTRY  DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  117.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  118.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  119.             long          (*DH32ENTRY atol) (const char *);
  120.             char *        (*DH32ENTRY strupr) (char *s);
  121.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  122.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  123.             long          (*DH32ENTRY strtol) (const char *, char **, int);
  124.         int (*DH32ENTRY  sec32_attach_ses)(void *);
  125.             int (*DH32ENTRY  DevHlp32_setIRQ)(unsigned short, unsigned short, unsigned short, unsigned short);
  126.             int (*DH32ENTRY2 DevHlp32_EOI)(unsigned short);
  127.             int (*DH32ENTRY  DevHlp32_UnSetIRQ)(unsigned short, unsigned short);
  128.             int (*DH32ENTRY  DevHlp32_PageListToLin)(unsigned long, struct PageList *, void **);
  129.             int (*DH32ENTRY  DevHlp32_AllocGDTSelector)(unsigned short *, int);
  130.             int (*DH32ENTRY2 DevHlp32_FreeGDTSelector)(unsigned short);
  131.             int (*DH32ENTRY  DevHlp32_AttachDD)(char *, struct ddtable *);
  132.             int (*DH32ENTRY  DevHlp32_GetDosVar)(int, PTR16 *, int);
  133.         } version_6;
  134.         struct {
  135.             int  (*DH32ENTRY  DevHlp32_SaveMessage)(char *, int);
  136.             void (*DH32ENTRY  DevHlp32_InternalError)(char *, int);
  137.             int  (*DH32ENTRY  DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  138.             int  (*DH32ENTRY2 DevHlp32_VMFree)(void *);
  139.             int  (*DH32ENTRY  DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  140.             int  (*DH32ENTRY  DevHlp32_VMUnlock)(void *);
  141.             int  (*DH32ENTRY  DevHlp32_VirtToLin)(PTR16, void **);
  142.             int  (*DH32ENTRY  DevHlp32_ProcBlock)(unsigned long, long, short);
  143.             int  (*DH32ENTRY  DevHlp32_ProcRun)(unsigned long);
  144.             int  (*DH32ENTRY  DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  145.             int  (*DH32ENTRY  DevHlp32_Security)(unsigned long, void *);
  146.             void (*DH32ENTRY  DevHlp32_Yield)(void);
  147.             int  (*DH32ENTRY  DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  148.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  149.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  150.             long          (*DH32ENTRY atol) (const char *);
  151.             char *        (*DH32ENTRY strupr) (char *s);
  152.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  153.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  154.             long          (*DH32ENTRY strtol) (const char *, char **, int);
  155.         int (*DH32ENTRY  sec32_attach_ses)(void *);
  156.             int (*DH32ENTRY  DevHlp32_setIRQ)(unsigned short, unsigned short, unsigned short, unsigned short);
  157.             int (*DH32ENTRY2 DevHlp32_EOI)(unsigned short);
  158.             int (*DH32ENTRY  DevHlp32_UnSetIRQ)(unsigned short, unsigned short);
  159.         } version_5;
  160.         struct {
  161.             int  (*DH32ENTRY DevHlp32_SaveMessage)(char *, int);
  162.             void (*DH32ENTRY DevHlp32_InternalError)(char *, int);
  163.             int  (*DH32ENTRY DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  164.             int  (*_Optlink  DevHlp32_VMFree)(void *);
  165.             int  (*DH32ENTRY DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  166.             int  (*DH32ENTRY DevHlp32_VMUnlock)(void *);
  167.             int  (*DH32ENTRY DevHlp32_VirtToLin)(PTR16, void **);
  168.             int  (*DH32ENTRY DevHlp32_ProcBlock)(unsigned long, long, short);
  169.             int  (*DH32ENTRY DevHlp32_ProcRun)(unsigned long);
  170.             int  (*DH32ENTRY DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  171.             int  (*DH32ENTRY DevHlp32_Security)(unsigned long, void *);
  172.             void (*DH32ENTRY DevHlp32_Yield)(void);
  173.             int  (*DH32ENTRY DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  174.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  175.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  176.             long          (*DH32ENTRY atol) (const char *);
  177.             char *        (*DH32ENTRY strupr) (char *s);
  178.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  179.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  180.             long          (*DH32ENTRY strtol) (const char *, char **, int);
  181.         int (*DH32ENTRY sec32_attach_ses)(void *);
  182.         } version_4;
  183.         struct {
  184.             int  (*DH32ENTRY DevHlp32_SaveMessage)(char *, int);
  185.             void (*DH32ENTRY DevHlp32_InternalError)(char *, int);
  186.             int  (*DH32ENTRY DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  187.             int  (*_Optlink  DevHlp32_VMFree)(void *);
  188.             int  (*DH32ENTRY DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  189.             int  (*DH32ENTRY DevHlp32_VMUnlock)(void *);
  190.             int  (*DH32ENTRY DevHlp32_VirtToLin)(PTR16, void **);
  191.             int  (*DH32ENTRY DevHlp32_ProcBlock)(unsigned long, long, short);
  192.             int  (*DH32ENTRY DevHlp32_ProcRun)(unsigned long);
  193.             int  (*DH32ENTRY DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  194.             int  (*DH32ENTRY DevHlp32_Security)(unsigned long, void *);
  195.             void (*DH32ENTRY DevHlp32_Yield)(void);
  196.             int  (*DH32ENTRY DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  197.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  198.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  199.             long          (*DH32ENTRY atol) (const char *);
  200.             char *        (*DH32ENTRY strupr) (char *s);
  201.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  202.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  203.             long          (*DH32ENTRY strtol) (const char *, char **, int);
  204.         } version_3;
  205.         struct {
  206.             int  (*DH32ENTRY DevHlp32_SaveMessage)(char *, int);
  207.             void (*DH32ENTRY DevHlp32_InternalError)(char *, int);
  208.             int  (*DH32ENTRY DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  209.             int  (*_Optlink  DevHlp32_VMFree)(void *);
  210.             int  (*DH32ENTRY DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  211.             int  (*DH32ENTRY DevHlp32_VMUnlock)(void *);
  212.             int  (*DH32ENTRY DevHlp32_VirtToLin)(PTR16, void **);
  213.             int  (*DH32ENTRY DevHlp32_ProcBlock)(unsigned long, long, short);
  214.             int  (*DH32ENTRY DevHlp32_ProcRun)(unsigned long);
  215.             int  (*DH32ENTRY DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  216.             int  (*DH32ENTRY DevHlp32_Security)(unsigned long, void *);
  217.             void (*DH32ENTRY DevHlp32_Yield)(void);
  218.             int  (*DH32ENTRY DevHlp32_GetInfoSegs)(struct InfoSegGDT **, struct InfoSegLDT **);
  219.             int           (*DH32ENTRY vsprintf)(char *, const char *, va_list);
  220.             unsigned long (*DH32ENTRY strtoul) (const char *, char **, int);
  221.             long          (*DH32ENTRY atol) (const char *);
  222.             char *        (*DH32ENTRY strupr) (char *s);
  223.             char *        (*DH32ENTRY strpbrk) (const char *, const char *);
  224.             int           (*DH32ENTRY fnmatch) (const char *, const char *, int);
  225.         } version_2;
  226.         struct {
  227.             int  (*DH32ENTRY DevHlp32_SaveMessage)(char *, int);
  228.             void (*DH32ENTRY DevHlp32_InternalError)(char *, int);
  229.             int  (*DH32ENTRY DevHlp32_VMAlloc)(unsigned long, unsigned long, unsigned long, void **);
  230.             int  (*_Optlink  DevHlp32_VMFree)(void *);
  231.             int  (*DH32ENTRY DevHlp32_VMLock)(unsigned long, void *, unsigned long, void *, void *, unsigned long *);
  232.             int  (*DH32ENTRY DevHlp32_VMUnlock)(void *);
  233.             int  (*DH32ENTRY DevHlp32_VirtToLin)(PTR16, void **);
  234.             int  (*DH32ENTRY DevHlp32_ProcBlock)(unsigned long, long, short);
  235.             int  (*DH32ENTRY DevHlp32_ProcRun)(unsigned long);
  236.             int  (*DH32ENTRY DevHlp32_LinToPageList)(void *, unsigned long, struct PageList *, unsigned long *);
  237.             int  (*DH32ENTRY DevHlp32_Security)(unsigned long, void *);
  238.             void (*DH32ENTRY DevHlp32_Yield)(void);
  239.         } version_1;
  240.     };
  241. };
  242.  
  243.  
  244.  
  245. /**************************************************************************************/
  246. /*** DevHlp32_VerifyAccess                                                          ***/
  247. /**************************************************************************************/
  248. #ifdef DYNAMIC_DEVHELP
  249. INLINE int DH32ENTRY DevHlp32_VerifyAccess(
  250.                       PTR16 address,        /* ebp + 8 */
  251.                       int size,            /* ebp + 12 */    
  252.                                   int flags                 /* ebp + 16  */
  253.                                      ) {
  254.     return DevHelp32.version_7.DevHlp32_VerifyAccess(address,size,flags);
  255. }
  256. #else
  257. extern int DH32ENTRY DevHlp32_VerifyAccess(
  258.                       PTR16 address,        /* ebp + 8 */
  259.                       unsigned short size,    /* ebp + 12 */    
  260.                                   int flags                 /* ebp + 16  */
  261.                                      );
  262. #endif
  263. #define VERIFY_READONLY    0
  264. #define VERIFY_READWRITE 1
  265.  
  266.  
  267. /**************************************************************************************/
  268. /*** DevHlp32_OpenEventSem                                                          ***/
  269. /**************************************************************************************/
  270. #ifdef DYNAMIC_DEVHELP
  271. INLINE int DH32ENTRY DevHlp32_OpenEventSem(
  272.                                   unsigned long handle        /* ebp + 8  */
  273.                                      ) {
  274.     return DevHelp32.version_7.DevHlp32_OpenEventSem(handle);
  275. }
  276. #else
  277. extern int DH32ENTRY DevHlp32_OpenEventSem(
  278.                                   unsigned long handle        /* ebp + 8  */
  279.                                      );
  280. #endif
  281.  
  282.  
  283. /**************************************************************************************/
  284. /*** DevHlp32_CloseEventSem                                                         ***/
  285. /**************************************************************************************/
  286. #ifdef DYNAMIC_DEVHELP
  287. INLINE int DH32ENTRY DevHlp32_CloseEventSem(
  288.                                   unsigned long handle        /* ebp + 8  */
  289.                                      ) {
  290.     return DevHelp32.version_7.DevHlp32_CloseEventSem(handle);
  291. }
  292. #else
  293. extern int DH32ENTRY DevHlp32_CloseEventSem(
  294.                                   unsigned long handle        /* ebp + 8  */
  295.                                      );
  296. #endif
  297.  
  298.  
  299. /**************************************************************************************/
  300. /*** DevHlp32_PostEventSem                                                          ***/
  301. /**************************************************************************************/
  302. #ifdef DYNAMIC_DEVHELP
  303. INLINE int DH32ENTRY DevHlp32_PostEventSem(
  304.                                   unsigned long handle        /* ebp + 8  */
  305.                                      ) {
  306.     return DevHelp32.version_7.DevHlp32_PostEventSem(handle);
  307. }
  308. #else
  309. extern int DH32ENTRY DevHlp32_PostEventSem(
  310.                                   unsigned long handle        /* ebp + 8  */
  311.                                      );
  312. #endif
  313.  
  314.  
  315. /**************************************************************************************/
  316. /*** DevHlp32_ResetEventSem                                                         ***/
  317. /**************************************************************************************/
  318. #ifdef DYNAMIC_DEVHELP
  319. INLINE int DH32ENTRY DevHlp32_ResetEventSem(
  320.                                    unsigned long handle,       /* ebp + 8  */
  321.                                    int *nposts                 /* ebp + 12 */
  322.                                      ) {
  323.     return DevHelp32.version_7.DevHlp32_ResetEventSem(handle,nposts);
  324. }
  325. #else
  326. extern int DH32ENTRY DevHlp32_ResetEventSem(
  327.                                   unsigned long handle,       /* ebp + 8  */
  328.                                    int *nposts                 /* ebp + 12 */
  329.                                      );
  330. #endif
  331.  
  332.  
  333. /**************************************************************************************/
  334. /*** DevHlp32_VMLock                                                                ***/
  335. /**************************************************************************************/
  336. #define VMDHL_WRITE             0x0008
  337. #define VMDHL_LONG              0x0010
  338. #define VMDHL_VERIFY            0x0020
  339.  
  340. #ifdef DYNAMIC_DEVHELP
  341. INLINE int DH32ENTRY DevHlp32_VMLock(                                                             
  342.                                      unsigned long   flags,
  343.                                      void           *addr,
  344.                                      unsigned long   length,
  345.                                      void           *pPageList,
  346.                                      void           *pLockHandle,
  347.                                      unsigned long *pPageListCount
  348.                                     ) {
  349.     return DevHelp32.version_1.DevHlp32_VMLock(flags, addr, length, pPageList, pLockHandle, pPageListCount);
  350. }
  351. #else                                                   
  352. extern int DH32ENTRY DevHlp32_VMLock(                                                             
  353.             unsigned long   flags,
  354.             void           *addr,
  355.             unsigned long   length,
  356.             void           *pPageList,
  357.             void           *pLockHandle,
  358.             unsigned long *pPageListCount
  359.            );                                                            
  360. #endif
  361.  
  362. /**************************************************************************************/
  363. /*** DevHlp32_setIRQ                                                                ***/
  364. /**************************************************************************************/
  365. #ifdef DYNAMIC_DEVHELP
  366. INLINE int DH32ENTRY DevHlp32_setIRQ(
  367.                                      unsigned short offset_irq,        /* ebp + 8  */
  368.                                        unsigned short interrupt_level,    /* ebp + 12 */
  369.                              unsigned short sharing_flag,     /* ebp + 16 */
  370.                              unsigned short data16_segment     /* ebp + 20 */
  371.                               ) {
  372.     return DevHelp32.version_5.DevHlp32_setIRQ(offset_irq, interrupt_level, sharing_flag, data16_segment);
  373. }
  374. #else
  375. extern int DH32ENTRY DevHlp32_setIRQ(
  376.                                      unsigned short offset_irq,        /* ebp + 8  */
  377.                              unsigned short interrupt_level,    /* ebp + 12 */
  378.                              unsigned short sharing_flag,     /* ebp + 16 */
  379.                              unsigned short data16_segment     /* ebp + 20 */
  380.                                     );
  381.  
  382. #endif
  383.  
  384. /**************************************************************************************/
  385. /*** DevHlp32_EOI                                                                   ***/
  386. /**************************************************************************************/
  387. #ifdef DYNAMIC_DEVHELP
  388. INLINE int DH32ENTRY2 DevHlp32_EOI(
  389.                                      unsigned short interrupt_level    /* ax */
  390.                                   ) {
  391.     return DevHelp32.version_5.DevHlp32_EOI(interrupt_level);
  392. }
  393. #else
  394. extern int DH32ENTRY2 DevHlp32_EOI(
  395.                            unsigned short interrupt_level    /* ax */
  396.                                   );
  397.  
  398. #endif
  399.  
  400. /**************************************************************************************/
  401. /*** DevHlp32_AllocGDTSelector                                                      ***/
  402. /**************************************************************************************/
  403. #ifdef DYNAMIC_DEVHELP
  404. INLINE int DH32ENTRY DevHlp32_AllocGDTSelector(
  405.                                                unsigned short *psel, 
  406.                                                int count
  407.                                               ) {
  408.     return DevHelp32.version_6.DevHlp32_AllocGDTSelector(psel, count);
  409. }
  410. #else
  411. extern int DH32ENTRY DevHlp32_AllocGDTSelector(
  412.                                                unsigned short *psel, 
  413.                                                int count
  414.                                               );
  415. #endif
  416.  
  417. /**************************************************************************************/
  418. /*** DevHlp32_FreeGDTSelector                                                       ***/
  419. /**************************************************************************************/
  420. #ifdef DYNAMIC_DEVHELP
  421. INLINE int DH32ENTRY2 DevHlp32_FreeGDTSelector(
  422.                                                unsigned short sel      /* ax */ 
  423.                                               ) {
  424.     return DevHelp32.version_6.DevHlp32_FreeGDTSelector(sel);
  425. }
  426. #else
  427. extern int DH32ENTRY2 DevHlp32_FreeGDTSelector(
  428.                                                unsigned short sel      /* ax */ 
  429.                                               );
  430. #endif
  431.  
  432. /**************************************************************************************/
  433. /*** DevHlp32_UnSetIRQ                                                              ***/
  434. /**************************************************************************************/
  435. #ifdef DYNAMIC_DEVHELP
  436. INLINE int DH32ENTRY DevHlp32_UnSetIRQ(
  437.                                          unsigned short interrupt_level,    /* ebp + 8  */
  438.                                  unsigned short data16_segment     /* ebp + 12 */
  439.                                       ) {
  440.     return DevHelp32.version_5.DevHlp32_UnSetIRQ(interrupt_level, data16_segment);
  441. }
  442. #else
  443. extern int DH32ENTRY DevHlp32_UnSetIRQ(
  444.                                          unsigned short interrupt_level,    /* ebp + 8  */
  445.                                  unsigned short data16_segment     /* ebp + 12 */
  446.                                       );
  447. #endif
  448.  
  449. /**************************************************************************************/
  450. /*** DevHlp32_VMUnlock                                                              ***/
  451. /**************************************************************************************/
  452. #ifdef DYNAMIC_DEVHELP
  453. INLINE int DH32ENTRY DevHlp32_VMUnlock(
  454.                                        void *pLockHandle   /* ebp + 8 */
  455.                                       ) {
  456.     return DevHelp32.version_1.DevHlp32_VMUnlock(pLockHandle);
  457. }
  458. #else
  459. extern int DH32ENTRY DevHlp32_VMUnlock(
  460.                                        void *pLockHandle   /* ebp + 8 */
  461.                                       );
  462. #endif
  463.  
  464. /**************************************************************************************/
  465. /*** DevHlp32_VMAlloc                                                               ***/
  466. /**************************************************************************************/
  467. #define VMDHA_16M               0x0001 
  468. #define VMDHA_FIXED             0x0002
  469. #define VMDHA_SWAP              0x0004
  470. #define VMDHA_CONTIG            0x0008
  471. #define VMDHA_PHYS              0x0010
  472. #define VMDHA_PROCESS           0x0020
  473. #define VMDHA_SGSCONT           0x0040
  474. #define VMDHA_RESERVE           0x0100
  475. #define VMDHA_USEHIGHMEM        0x0800
  476.  
  477. #define VMDHA_NOPHYSADDR        0xFFFFFFFF
  478.  
  479. #ifdef DYNAMIC_DEVHELP
  480. INLINE int DH32ENTRY DevHlp32_VMAlloc(
  481.                                       unsigned long  Length,      /* ebp + 8  */
  482.                                       unsigned long  PhysAddr,    /* ebp + 12 */
  483.                                       unsigned long  Flags,       /* ebp + 16 */
  484.                                       void         **LinAddr      /* ebp + 20 */
  485.                                      ) {
  486.     return DevHelp32.version_1.DevHlp32_VMAlloc(Length, PhysAddr, Flags, LinAddr);
  487. }
  488. #else
  489. extern int DH32ENTRY DevHlp32_VMAlloc(
  490.                                       unsigned long  Length,      /* ebp + 8  */
  491.                                       unsigned long  PhysAddr,    /* ebp + 12 */
  492.                                       unsigned long  Flags,       /* ebp + 16 */
  493.                                       void         **LinAddr      /* ebp + 20 */
  494.                                      );
  495. #endif
  496.  
  497. /**************************************************************************************/
  498. /*** DevHlp32_VMFree                                                                ***/
  499. /**************************************************************************************/
  500. #ifdef DYNAMIC_DEVHELP
  501. INLINE int _Optlink DevHlp32_VMFree(
  502.                                     void *addr        /* eax */
  503.                                    ) {
  504.     return DevHelp32.version_1.DevHlp32_VMFree(addr);
  505. }
  506. #else
  507. extern int _Optlink DevHlp32_VMFree(
  508.                                     void *addr        /* eax */
  509.                                    );
  510. #endif
  511.  
  512. /**************************************************************************************/
  513. /*** DevHlp32_VirtToLin                                                             ***/
  514. /**************************************************************************************/
  515. #ifdef DYNAMIC_DEVHELP
  516. INLINE int DH32ENTRY DevHlp32_VirtToLin(
  517.                                         PTR16  virt, // [ebp + 8]
  518.                                         void **plin  // [ebp + 12]
  519.                                        ) {
  520.     return DevHelp32.version_1.DevHlp32_VirtToLin(virt, plin);
  521. }
  522. #else
  523. extern int DH32ENTRY DevHlp32_VirtToLin(
  524.                                         PTR16  virt, // [ebp + 8]
  525.                                         void **plin  // [ebp + 12]
  526.                                        );
  527. #endif
  528.  
  529. /**************************************************************************************/
  530. /*** DevHlp32_GetDosVar                                                             ***/
  531. /**************************************************************************************/
  532. #ifdef DYNAMIC_DEVHELP
  533. INLINE int DH32ENTRY DevHlp32_GetDosVar(
  534.                                         int     index,      /* ebp + 8  */
  535.                                         PTR16  *value,      /* ebp + 12 */
  536.                                         int     member      /* ebp + 16 */
  537.                                        ) {
  538.     return DevHelp32.version_6.DevHlp32_GetDosVar(index, value, member);
  539. }
  540. #else
  541. extern int DH32ENTRY DevHlp32_GetDosVar(
  542.                                         int     index,      /* ebp + 8  */
  543.                                         PTR16  *value,      /* ebp + 12 */
  544.                                         int     member      /* ebp + 16 */
  545.                                        );
  546. #endif
  547.  
  548. /**************************************************************************************/
  549. /*** DevHlp32_Security                                                              ***/
  550. /**************************************************************************************/
  551. #ifdef DYNAMIC_DEVHELP
  552. INLINE int DH32ENTRY DevHlp32_Security(
  553.                        unsigned long   func,     /* ebp + 8  */
  554.                                        void           *ptr       /* ebp + 12 */
  555.                                       ) {
  556.     return DevHelp32.version_1.DevHlp32_Security(func, ptr);
  557. }
  558. #else
  559. extern int DH32ENTRY DevHlp32_Security(
  560.                        unsigned long   func,     /* ebp + 8  */
  561.                                        void           *ptr       /* ebp + 12 */
  562.                                       );
  563. #endif
  564.  
  565. // #define DHSEC_GETEXPORT  0x48a78df8
  566. // #define DHSEC_SETIMPORT  0x73ae3627
  567. // #define DHSEC_GETINFO    0x33528882
  568.  
  569. /**************************************************************************************/
  570. /*** DevHlp32_AttachDD                                                              ***/
  571. /**************************************************************************************/
  572. #ifdef DYNAMIC_DEVHELP
  573. INLINE int DH32ENTRY DevHlp32_AttachDD(char *ddname, struct ddtable *table) {
  574.     return DevHelp32.version_6.DevHlp32_AttachDD(ddname, table);
  575. }
  576. #else
  577. extern int DH32ENTRY DevHlp32_AttachDD(char *ddname, struct ddtable *table);
  578. #endif
  579.  
  580. /**************************************************************************************/
  581. /*** DevHlp32_ProcBlock                                                             ***/
  582. /**************************************************************************************/
  583. #ifdef DYNAMIC_DEVHELP
  584. INLINE int DH32ENTRY DevHlp32_ProcBlock(
  585.                                   unsigned long  eventid,       /* bp + 8  */
  586.                                   long           timeout,       /* bp + 12 */
  587.                                   short          interruptible  /* bp + 16 */
  588.                                     ) {
  589.     return DevHelp32.version_1.DevHlp32_ProcBlock(eventid, timeout, interruptible);
  590. }
  591. #else
  592. extern int DH32ENTRY DevHlp32_ProcBlock(
  593.                           unsigned long  eventid,       /* bp + 8  */
  594.                           long           timeout,       /* bp + 12 */
  595.                           short          interruptible  /* bp + 16 */
  596.                          );
  597. #endif
  598.  
  599. /**************************************************************************************/
  600. /*** DevHlp32_ProcRun                                                               ***/
  601. /**************************************************************************************/
  602. #ifdef DYNAMIC_DEVHELP
  603. INLINE int DH32ENTRY DevHlp32_ProcRun(
  604.                                   unsigned long eventid        /* ebp + 8  */
  605.                                      ) {
  606.     return DevHelp32.version_1.DevHlp32_ProcRun(eventid);
  607. }
  608. #else
  609. extern int DH32ENTRY DevHlp32_ProcRun(
  610.                                   unsigned long eventid        /* ebp + 8  */
  611.                                      );
  612. #endif
  613.  
  614.  
  615.  
  616. /**************************************************************************************/
  617. /*** DevHlp32_PageListToLin                                                         ***/
  618. /**************************************************************************************/
  619. #ifdef DYNAMIC_DEVHELP
  620. INLINE int DH32ENTRY DevHlp32_PageListToLin(
  621.                                             unsigned long     size,        /* ebp + 8  */
  622.                                             struct PageList  *pPageList,   /* ebp + 12 */
  623.                                             void            **pLin         /* ebp + 16 */
  624.                                            ) {
  625.     return DevHelp32.version_6.DevHlp32_PageListToLin(size, pPageList, pLin);
  626. }
  627. #else
  628. extern int DH32ENTRY DevHlp32_PageListToLin(
  629.                                             unsigned long     size,        /* ebp + 8  */
  630.                                             struct PageList  *pPageList,   /* ebp + 12 */
  631.                                             void            **pLin         /* ebp + 16 */
  632.                                            );
  633. #endif
  634.  
  635. /**************************************************************************************/
  636. /*** DevHlp32_LinToPageList                                                         ***/
  637. /**************************************************************************************/
  638. #ifdef DYNAMIC_DEVHELP
  639. INLINE int DH32ENTRY DevHlp32_LinToPageList(
  640.                                 void            *lin,         /* ebp + 8  */
  641.                                 unsigned long    size,        /* ebp + 12 */
  642.                                 struct PageList *pages,        /* ebp + 16 */
  643.                                 unsigned long   *nr_pages    /* ebp + 20 */
  644.                                ) {
  645.     return DevHelp32.version_1.DevHlp32_LinToPageList(lin, size, pages, nr_pages);
  646. }
  647. #else
  648. extern int DH32ENTRY DevHlp32_LinToPageList(
  649.                                 void            *lin,         /* ebp + 8  */
  650.                                 unsigned long    size,        /* ebp + 12 */
  651.                                 struct PageList *pages,        /* ebp + 16 */
  652.                                 unsigned long   *nr_pages    /* ebp + 20 */
  653.                                );
  654. #endif
  655.  
  656. /**************************************************************************************/
  657. /*** DevHlp32_GetInfoSegs                                                           ***/
  658. /**************************************************************************************/
  659. #ifdef DYNAMIC_DEVHELP
  660. INLINE int DH32ENTRY DevHlp32_GetInfoSegs(
  661.                     struct InfoSegGDT **ppSysInfoSeg,  /* ebp + 8  */
  662.                     struct InfoSegLDT **ppLocInfoSeg   /* ebp + 12 */
  663.                    ) {
  664.     return DevHelp32.version_2.DevHlp32_GetInfoSegs(ppSysInfoSeg, ppLocInfoSeg);
  665. }
  666. #else
  667. extern int DH32ENTRY DevHlp32_GetInfoSegs(
  668.                     struct InfoSegGDT **ppSysInfoSeg,  /* ebp + 8  */
  669.                     struct InfoSegLDT **ppLocInfoSeg   /* ebp + 12 */
  670.                    );
  671. #endif
  672.  
  673. /**************************************************************************************/
  674. /*** DevHlp32_SaveMessage                                                           ***/
  675. /**************************************************************************************/
  676. #ifdef DYNAMIC_DEVHELP
  677. INLINE int DH32ENTRY DevHlp32_SaveMessage(
  678.                                  char *msg,        /* ebp + 8  */
  679.                               int   len        /* ebp + 12 */
  680.                                  ) {
  681.     return DevHelp32.version_1.DevHlp32_SaveMessage(msg, len);
  682. }
  683. #else
  684. extern int DH32ENTRY DevHlp32_SaveMessage(
  685.                                  char *msg,        /* ebp + 8  */
  686.                               int   len        /* ebp + 12 */
  687.                                  );
  688. #endif
  689.  
  690.  
  691.  
  692. /**************************************************************************************/
  693. /*** DevHlp32_InternalError                                                         ***/
  694. /**************************************************************************************/
  695. #ifdef DYNAMIC_DEVHELP
  696. INLINE void DH32ENTRY DevHlp32_InternalError(
  697.                                     char *msg,        /* ebp + 8  */
  698.                                  int   len        /* ebp + 12 */
  699.                                     ) {
  700.     DevHelp32.version_1.DevHlp32_InternalError(msg, len);
  701. }
  702. #else
  703. extern void DH32ENTRY DevHlp32_InternalError(
  704.                                     char *msg,        /* ebp + 8  */
  705.                                  int   len        /* ebp + 12 */
  706.                                     );
  707. #endif
  708.  
  709. /**************************************************************************************/
  710. /*** DevHlp32_Yield                                                                 ***/
  711. /**************************************************************************************/
  712. #ifdef DYNAMIC_DEVHELP
  713. INLINE void DH32ENTRY DevHlp32_Yield(void) {
  714.     DevHelp32.version_1.DevHlp32_Yield();
  715. }
  716. #else
  717. extern void DH32ENTRY DevHlp32_Yield(void);
  718. #endif
  719.  
  720. /**************************************************************************************/
  721. /*** fsh32_yield                                                                    ***/
  722. /**************************************************************************************/
  723. #ifdef DYNAMIC_DEVHELP
  724. INLINE void DH32ENTRY fsh32_yield(void) {
  725.     DevHelp32.version_1.DevHlp32_Yield();
  726. }
  727. #else
  728. INLINE void DH32ENTRY fsh32_yield(void) {
  729.     DevHlp32_Yield();
  730. }
  731. #endif
  732.  
  733.  
  734. /**************************************************************************************/
  735. /*** sec32_attach_ses                                                               ***/
  736. /**************************************************************************************/
  737. #ifdef DYNAMIC_DEVHELP
  738. INLINE int DH32ENTRY sec32_attach_ses (void *SecHlp) {
  739.     return DevHelp32.version_4.sec32_attach_ses(SecHlp);
  740. }
  741. #else
  742. extern int DH32ENTRY sec32_attach_ses (void *SecHlp);
  743. #endif
  744.  
  745. /**************************************************************************************/
  746. /*** vsprintf                                                                       ***/
  747. /**************************************************************************************/
  748. #ifdef DYNAMIC_DEVHELP
  749. INLINE int DH32ENTRY vsprintf(char *buf, const char *fmt, va_list args) {
  750.     return DevHelp32.version_2.vsprintf(buf, fmt, args);
  751. }
  752. #else
  753. extern int DH32ENTRY vsprintf(char *buf, const char *fmt, va_list args);
  754. #endif
  755.  
  756. /**************************************************************************************/
  757. /*** strtoul                                                                        ***/
  758. /**************************************************************************************/
  759. #ifdef DYNAMIC_DEVHELP
  760. INLINE unsigned long DH32ENTRY __mwdd32_strtoul (const char *string, char **end_ptr, int radix) {
  761.     return DevHelp32.version_2.strtoul (string, end_ptr, radix);
  762. }
  763. #else
  764. extern unsigned long DH32ENTRY __mwdd32_strtoul (const char *string, char **end_ptr, int radix);
  765. #endif
  766.  
  767. #define strtoul(__s, __e, __r) __mwdd32_strtoul((__s), (__e), (__r))
  768.  
  769. /**************************************************************************************/
  770. /*** strtol                                                                         ***/
  771. /**************************************************************************************/
  772. #ifdef DYNAMIC_DEVHELP
  773. INLINE long DH32ENTRY __mwdd32_strtol (const char *string, char **end_ptr, int radix) {
  774.     return DevHelp32.version_3.strtol (string, end_ptr, radix);
  775. }
  776. #else
  777. extern long DH32ENTRY __mwdd32_strtol (const char *string, char **end_ptr, int radix);
  778. #endif
  779.  
  780. #define strtol(__s, __e, __r)  __mwdd32_strtol((__s), (__e), (__r))
  781.  
  782. /**************************************************************************************/
  783. /*** atol                                                                           ***/
  784. /**************************************************************************************/
  785. #ifdef DYNAMIC_DEVHELP
  786. INLINE long DH32ENTRY __mwdd32_atol (const char *string) {
  787.     return DevHelp32.version_2.atol(string);
  788. }
  789. #else
  790. extern long DH32ENTRY __mwdd32_atol (const char *string);
  791. #endif
  792.  
  793. #define atol(__s)              __mwdd32_atol((__s))
  794.  
  795. /**************************************************************************************/
  796. /*** strupr                                                                         ***/
  797. /**************************************************************************************/
  798. #ifdef DYNAMIC_DEVHELP
  799. INLINE char * DH32ENTRY __mwdd32_strupr (char *string) {
  800.     return DevHelp32.version_2.strupr(string);
  801. }
  802. #else
  803. extern char * DH32ENTRY __mwdd32_strupr (char *string);
  804. #endif
  805.  
  806. #define strupr(__s)            __mwdd32_strupr((__s))
  807.  
  808. /**************************************************************************************/
  809. /*** strpbrk                                                                        ***/
  810. /**************************************************************************************/
  811. #ifdef DYNAMIC_DEVHELP
  812. INLINE char * DH32ENTRY __mwdd32_strpbrk (const char *string1, const char *string2) {
  813.     return DevHelp32.version_2.strpbrk (string1, string2);
  814. }
  815. #else
  816. extern char * DH32ENTRY __mwdd32_strpbrk (const char *string1, const char *string2);
  817. #endif
  818.  
  819. #define strpbrk(__s1, __s2)    __mwdd32_strpbrk((__s1), (__s2))
  820.  
  821. /**************************************************************************************/
  822. /*** fnmatch                                                                        ***/
  823. /**************************************************************************************/
  824. #ifdef DYNAMIC_DEVHELP
  825. INLINE int DH32ENTRY __mwdd32_fnmatch (const char *mask, const char *name, int flags) {
  826.     return DevHelp32.version_2.fnmatch (mask, name, flags);
  827. }
  828. #else
  829. extern int DH32ENTRY __mwdd32_fnmatch (const char *mask, const char *name, int flags);
  830. #endif
  831.  
  832. #define fnmatch(__m, __n, __f) __mwdd32_fnmatch((__m), (__n), (__f))
  833.  
  834.  
  835. /**************************************************************************************/
  836. /*** MVDM.DLL entry points                                                          ***/
  837. /**************************************************************************************/
  838. extern void * _Pascal VDHQueryLin(PTR16);
  839.  
  840. #endif
  841.  
  842.