home *** CD-ROM | disk | FTP | other *** search
- /***
- * vmm.h -
- *
- * Copyright (c) 1989-1992, Microsoft Corporation. All rights reserved.
- *
- *******************************************************************************/
-
- #define VMFUNC _far _pascal
-
- typedef unsigned long VPVOID; /* vp */
- typedef unsigned long VPAGE; /* vpag */
-
- #ifndef OS2_INCLUDED
- typedef unsigned char _far * PUCHAR;
- typedef void _far * PVOID;
- #endif
-
- #ifndef TRUE
- #define TRUE 1
- #endif
- #ifndef FALSE
- #define FALSE 0
- #endif
-
- #define vpNil ((VPVOID) 0)
-
- #define IbOfVp(vp) ((vp) & (cbVmPage-1))
- #define VpPageOfVp(vp) ((vp) & ~(cbVmPage-1L))
- #define PageOfVp(vp) ((VPAGE) ((vp) / cbVmPage))
- #define VpVmPageVp VpPageOfVp
-
- #define VpOfPageIb(vpag, ib) ((VPVOID) (((vpag) * cbVmPage) + (ib)))
-
- /* other VMM stuff */
- #define cbAllDos 0
- #define fSwapArea 0
- #define fUseEMS 1
- #define fUseXMS 2
- #define fUseDisk 4
- #define bitUseAll (fUseEMS | fUseXMS | fUseDisk)
-
- #define swpIn 1
- #define swpOut 2
- typedef void (VMFUNC * PFNSWAP)(int, VPVOID, unsigned int);
-
- typedef PVOID HBK;
-
- extern int _near _fVmTrace;
-
- /* *****************************************************************
- * OS/2 Definitions *
- ***************************************************************** */
-
- #ifdef OS2
-
- #error VM DOES NOT SUPPORT OS2
-
- #ifndef _HEAP_MAXREQ
- #include <malloc.h>
- #endif
- #include <memory.h>
-
- #define cbVmPage 4096U
- #define cVmPageSh 11U
- #define cbVmParaPage 256U
- #define cVmParaPageSh 8U
- #define cbVmMaxAlloc (65536U - cbVmPage)
- #define cbVmPageAlloc cbVmPage
-
- #define FVmInitialize(a,b,c) TRUE
- #define VmTerminate() ((void) 0)
-
- #define VpVmAllocatePage() ((VPVOID) _fmalloc(cbVmPage))
- #define VpVmAllocateCb(a) ((VPVOID) _fmalloc( ((((a) + cbVmPage - 1) / cbVmPage) * cbVmPage)))
-
- #define PVmLoadVp(a,b) ((PVOID) (a))
- #define PVmLoadVpCb(a,b,c) ((PVOID) (a))
-
- #define PVmLockVp(a) ((PVOID) (a))
- #define PVmLockVpCb(a,b) ((PVOID) (a))
- #define VmUnlockVp(a,b) ((void) 0)
- #define VmUnlockVpCb(a,b,c) ((void) 0)
- #define CVmLockVp(a) 0
-
- #if VMFREE
-
- #define VmFreePageVp(a) _ffree((void far *) (a))
- #define VmFreePageVpCb(a, b) _ffree((void far *) (a))
-
- #endif /* VMFREE */
-
- /* **********************************************************************
- * *
- * High level VM defines *
- * *
- ********************************************************************** */
-
- /* Virtual Memory Block Manager */
-
- #define __VmInitialize __FVmInitialize
- #define VpHbk(a) ((VPVOID) (a))
- #define HbkVmAllocate(a) ((HBK) _fmalloc((size_t) (a)))
- #define HbkVmReallocate(a,b) ((HBK) _frealloc((a),((size_t) (b))))
- #define PVmLoadHbk(a,b) ((PVOID) (a))
- #define PVmLoadMember(a,b,c,d) (PVmLoadCb(VpHbk(a) + b, c, d))
- #define VmFreeHbk(a) _ffree((void far *) (a))
- #define VpMemCopyVp(a,b,c) (_fmemcpy(((PVOID) (a)), ((PVOID) (b)), ((size_t) (c))), TRUE)
- #define cbSizeHbk(a) ((unsigned long) _fmsize(a))
-
- #define PVmLockMember(a,b,c) (PVmLockCb(VpHbk(a) + b, c))
- #define VmUnlockMember(a,b,c,d) (VmUnlockCb(VpHbk(a) + b, c, d))
-
- #define PVmLockHbk(a) ((PVOID) (a))
- #define VmUnlockHbk(a,b) ((void) 0)
- #define CVmLockHbk(a) 0
-
-
- /* *****************************************************************
- * DOS Definitions *
- ***************************************************************** */
-
- #else
-
- /* Stub until multi page load is implemented */
-
- #define __PVmLoadVpCb __PVmLoadStubVpCb
-
-
- #define cbVmPage 2048U
- #define cVmPageSh 10U
- #define cbVmParaPage 128U
- #define cVmParaPageSh 7U
- #define cbVmMaxAlloc (0xFFFFFFFF - cbVmPage)
- #define cbVmPageAlloc cbVmPage - 6;
-
- int VMFUNC __FVmInitialize(unsigned cVmParaMin, unsigned cParaVmDosMax, unsigned bitSwapArea);
- void VMFUNC __VmTerminate(void);
-
- VPVOID VMFUNC __VpVmAllocatePage(void);
- VPVOID VMFUNC __VpVmAllocateCb(unsigned long cb);
-
- PVOID VMFUNC __PVmLoadVp(VPVOID vp, int fDirty);
- // PVOID VMFUNC __PVmLoadVpCb(VPVOID vp, unsigned long cb, int fDirty);
- PVOID VMFUNC __PVmLoadStubVpCb(VPVOID vp, unsigned long cb, int fDirty);
-
- PVOID VMFUNC __PVmLockVp(VPVOID vp);
- PVOID VMFUNC __PVmLockVpCb(VPVOID vp, unsigned long cb);
- void VMFUNC __VmUnlockVp(VPVOID vp, int fDirty);
- void VMFUNC __VmUnlockVpCb(VPVOID vp, unsigned long cb, int fDirty);
- unsigned VMFUNC __CVmLockVp(VPVOID vp);
-
- #if VMFREE
-
- void VMFUNC __VmFreePageVp(VPVOID vp);
- void VMFUNC __VmFreePageVpCb(VPVOID vp, unsigned long cb);
-
- #endif /* VMFREE */
-
-
- extern char _near _fVmDisableDisk;
- extern char _near _fVmDisableEms;
- extern char _near _fVmDisableXms;
-
-
- #if VMDEBUG
-
- extern int _near _fVmFillPages;
- extern char _near _bVmFillPages;
-
- #endif /* VMDEBUG */
-
- #if VMPROFILE
-
- extern int _near _fVmProfile;
-
- #endif /* VMPROFILE */
-
- #if VMTRACE
-
- extern int _near _fVmTrace;
-
- #endif /* VMTRACE */
-
-
- /* **********************************************************************
- * *
- * High level VM defines *
- * *
- ********************************************************************** */
-
- /* Virtual Memory Block Manager */
-
- #define VpHbk(a) (((VPVOID) (a)) + 6)
- #define PVmLoadMember(a,b,c,d) (PVmLoadCb(VpHbk(a) + b, c, d))
-
- extern int VMFUNC __VmInitialize(unsigned, unsigned, unsigned);
- extern int VMFUNC __FVmInitialize(unsigned, unsigned, unsigned);
- extern HBK VMFUNC __HbkVmAllocate(unsigned long);
- extern PVOID VMFUNC __PVmLoadHbk(HBK, int);
- extern HBK VMFUNC __HbkVmReallocate(HBK, unsigned long);
- extern void VMFUNC __VmFreeHbk(HBK);
- extern int VMFUNC __VpMemCopyVp(VPVOID, VPVOID, unsigned long);
- extern unsigned long VMFUNC __cbSizeHbk(HBK);
-
-
- #define PVmLockMember(a,b,c) (PVmLockCb(VpHbk(a) + b, c))
- #define VmUnlockMember(a,b,c,d) (VmUnlockCb(VpHbk(a) + b, c, d))
-
- extern PVOID VMFUNC __PVmLockHbk(HBK);
- extern void VMFUNC __VmUnlockHbk(HBK, int);
- extern unsigned VMFUNC __CVmLockHbk(HBK);
-
- #endif
-