home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / vm / h / vmm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-15  |  6.6 KB  |  214 lines

  1. /***
  2. * vmm.h -
  3. *
  4. *       Copyright (c) 1989-1992, Microsoft Corporation.  All rights reserved.
  5. *
  6. *******************************************************************************/
  7.  
  8. #define VMFUNC _far _pascal
  9.  
  10. typedef unsigned long VPVOID;         /* vp */
  11. typedef unsigned long VPAGE;          /* vpag */
  12.  
  13. #ifndef OS2_INCLUDED
  14. typedef unsigned char _far *    PUCHAR;
  15. typedef void _far *             PVOID;
  16. #endif
  17.  
  18. #ifndef TRUE
  19. #define TRUE 1
  20. #endif
  21. #ifndef FALSE
  22. #define FALSE 0
  23. #endif
  24.  
  25. #define vpNil ((VPVOID) 0)
  26.  
  27. #define IbOfVp(vp)      ((vp) & (cbVmPage-1))
  28. #define VpPageOfVp(vp)  ((vp) & ~(cbVmPage-1L))
  29. #define PageOfVp(vp)    ((VPAGE) ((vp) / cbVmPage))
  30. #define VpVmPageVp      VpPageOfVp
  31.  
  32. #define VpOfPageIb(vpag, ib) ((VPVOID) (((vpag) * cbVmPage) + (ib)))
  33.  
  34. /* other VMM stuff */
  35. #define cbAllDos    0
  36. #define fSwapArea   0
  37. #define fUseEMS     1
  38. #define fUseXMS     2
  39. #define fUseDisk    4
  40. #define bitUseAll   (fUseEMS | fUseXMS | fUseDisk)
  41.  
  42. #define     swpIn   1
  43. #define     swpOut  2
  44. typedef void (VMFUNC *  PFNSWAP)(int, VPVOID, unsigned int);
  45.  
  46. typedef PVOID   HBK;
  47.  
  48. extern int _near _fVmTrace;
  49.  
  50. /* *****************************************************************
  51.    *                 OS/2 Definitions                              *
  52.    ***************************************************************** */
  53.  
  54. #ifdef OS2
  55.  
  56. #error VM DOES NOT SUPPORT OS2
  57.  
  58. #ifndef _HEAP_MAXREQ
  59. #include <malloc.h>
  60. #endif
  61. #include <memory.h>
  62.  
  63. #define cbVmPage        4096U
  64. #define cVmPageSh       11U
  65. #define cbVmParaPage    256U
  66. #define cVmParaPageSh   8U
  67. #define cbVmMaxAlloc    (65536U - cbVmPage)
  68. #define cbVmPageAlloc   cbVmPage
  69.  
  70. #define FVmInitialize(a,b,c)    TRUE
  71. #define VmTerminate()           ((void) 0)
  72.  
  73. #define VpVmAllocatePage()      ((VPVOID) _fmalloc(cbVmPage))
  74. #define VpVmAllocateCb(a)       ((VPVOID) _fmalloc( ((((a) + cbVmPage - 1) / cbVmPage) * cbVmPage)))
  75.  
  76. #define PVmLoadVp(a,b)          ((PVOID) (a))
  77. #define PVmLoadVpCb(a,b,c)      ((PVOID) (a))
  78.  
  79. #define PVmLockVp(a)            ((PVOID) (a))
  80. #define PVmLockVpCb(a,b)        ((PVOID) (a))
  81. #define VmUnlockVp(a,b)         ((void) 0)
  82. #define VmUnlockVpCb(a,b,c)     ((void) 0)
  83. #define CVmLockVp(a)            0
  84.  
  85. #if     VMFREE
  86.  
  87. #define VmFreePageVp(a)         _ffree((void far *) (a))
  88. #define VmFreePageVpCb(a, b)    _ffree((void far *) (a))
  89.  
  90. #endif  /* VMFREE */
  91.  
  92. /* **********************************************************************
  93.    *                                                                    *
  94.    *         High level VM defines                                      *
  95.    *                                                                    *
  96.    ********************************************************************** */
  97.  
  98. /* Virtual Memory Block Manager */
  99.  
  100. #define __VmInitialize          __FVmInitialize
  101. #define VpHbk(a)                ((VPVOID) (a))
  102. #define HbkVmAllocate(a)        ((HBK) _fmalloc((size_t) (a)))
  103. #define HbkVmReallocate(a,b)    ((HBK) _frealloc((a),((size_t) (b))))
  104. #define PVmLoadHbk(a,b)         ((PVOID) (a))
  105. #define PVmLoadMember(a,b,c,d)  (PVmLoadCb(VpHbk(a) + b, c, d))
  106. #define VmFreeHbk(a)            _ffree((void far *) (a))
  107. #define VpMemCopyVp(a,b,c)      (_fmemcpy(((PVOID) (a)), ((PVOID) (b)), ((size_t) (c))), TRUE)
  108. #define cbSizeHbk(a)            ((unsigned long) _fmsize(a))
  109.  
  110. #define PVmLockMember(a,b,c)    (PVmLockCb(VpHbk(a) + b, c))
  111. #define VmUnlockMember(a,b,c,d) (VmUnlockCb(VpHbk(a) + b, c, d))
  112.  
  113. #define PVmLockHbk(a)           ((PVOID) (a))
  114. #define VmUnlockHbk(a,b)        ((void) 0)
  115. #define CVmLockHbk(a)           0
  116.  
  117.  
  118. /* *****************************************************************
  119.    *                 DOS Definitions                               *
  120.    ***************************************************************** */
  121.  
  122. #else
  123.  
  124.     /* Stub until multi page load is implemented */
  125.  
  126. #define __PVmLoadVpCb   __PVmLoadStubVpCb
  127.  
  128.  
  129. #define cbVmPage        2048U
  130. #define cVmPageSh       10U
  131. #define cbVmParaPage    128U
  132. #define cVmParaPageSh   7U
  133. #define cbVmMaxAlloc    (0xFFFFFFFF - cbVmPage)
  134. #define cbVmPageAlloc   cbVmPage - 6;
  135.  
  136. int      VMFUNC __FVmInitialize(unsigned cVmParaMin, unsigned cParaVmDosMax, unsigned bitSwapArea);
  137. void     VMFUNC __VmTerminate(void);
  138.  
  139. VPVOID   VMFUNC __VpVmAllocatePage(void);
  140. VPVOID   VMFUNC __VpVmAllocateCb(unsigned long cb);
  141.  
  142. PVOID    VMFUNC __PVmLoadVp(VPVOID vp, int fDirty);
  143. // PVOID         VMFUNC __PVmLoadVpCb(VPVOID vp, unsigned long cb, int fDirty);
  144. PVOID VMFUNC __PVmLoadStubVpCb(VPVOID vp, unsigned long cb, int fDirty);
  145.  
  146. PVOID    VMFUNC __PVmLockVp(VPVOID vp);
  147. PVOID    VMFUNC __PVmLockVpCb(VPVOID vp, unsigned long cb);
  148. void     VMFUNC __VmUnlockVp(VPVOID vp, int fDirty);
  149. void     VMFUNC __VmUnlockVpCb(VPVOID vp, unsigned long cb, int fDirty);
  150. unsigned VMFUNC __CVmLockVp(VPVOID vp);
  151.  
  152. #if     VMFREE
  153.  
  154. void     VMFUNC __VmFreePageVp(VPVOID vp);
  155. void     VMFUNC __VmFreePageVpCb(VPVOID vp, unsigned long cb);
  156.  
  157. #endif  /* VMFREE */
  158.  
  159.  
  160. extern char _near _fVmDisableDisk;
  161. extern char _near _fVmDisableEms;
  162. extern char _near _fVmDisableXms;
  163.  
  164.  
  165. #if     VMDEBUG
  166.  
  167. extern int  _near _fVmFillPages;
  168. extern char _near _bVmFillPages;
  169.  
  170. #endif  /* VMDEBUG */
  171.  
  172. #if     VMPROFILE
  173.  
  174. extern int  _near _fVmProfile;
  175.  
  176. #endif  /* VMPROFILE */
  177.  
  178. #if     VMTRACE
  179.  
  180. extern int _near  _fVmTrace;
  181.  
  182. #endif  /* VMTRACE */
  183.  
  184.  
  185. /* **********************************************************************
  186.    *                                                                    *
  187.    *         High level VM defines                                      *
  188.    *                                                                    *
  189.    ********************************************************************** */
  190.  
  191. /* Virtual Memory Block Manager */
  192.  
  193. #define VpHbk(a)                (((VPVOID) (a)) + 6)
  194. #define PVmLoadMember(a,b,c,d)  (PVmLoadCb(VpHbk(a) + b, c, d))
  195.  
  196. extern int      VMFUNC __VmInitialize(unsigned, unsigned, unsigned);
  197. extern int      VMFUNC __FVmInitialize(unsigned, unsigned, unsigned);
  198. extern HBK      VMFUNC __HbkVmAllocate(unsigned long);
  199. extern PVOID    VMFUNC __PVmLoadHbk(HBK, int);
  200. extern HBK      VMFUNC __HbkVmReallocate(HBK, unsigned long);
  201. extern void     VMFUNC __VmFreeHbk(HBK);
  202. extern int      VMFUNC __VpMemCopyVp(VPVOID, VPVOID, unsigned long);
  203. extern unsigned long VMFUNC __cbSizeHbk(HBK);
  204.  
  205.  
  206. #define PVmLockMember(a,b,c)    (PVmLockCb(VpHbk(a) + b, c))
  207. #define VmUnlockMember(a,b,c,d) (VmUnlockCb(VpHbk(a) + b, c, d))
  208.  
  209. extern PVOID    VMFUNC __PVmLockHbk(HBK);
  210. extern void     VMFUNC __VmUnlockHbk(HBK, int);
  211. extern unsigned VMFUNC __CVmLockHbk(HBK);
  212.  
  213. #endif
  214.