home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / diverses / text_cla / vmm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-12  |  3.1 KB  |  128 lines

  1. /***********************************************************************
  2. **+
  3. **  Module Name:  vmm.h
  4. **
  5. **  Description:  vmm defines
  6. **
  7. **  Written by:  John Tal
  8. **
  9. **
  10. **  Modification history:
  11. **
  12. **  Date         Engineer     Mod #          Modification Description
  13. **
  14. **  12-FEB-1992  Tal          v 1.0-000      Initial release
  15. **
  16. ***********************************************************************/
  17.  
  18.  
  19. #ifdef VMM_H
  20. #else
  21. #define VMM_H
  22.  
  23. /*
  24. **  Virtual Memory Manager
  25. **
  26. **   Blocks of memory from pvMosMemory are mapped into a link-list
  27. **   of VMM_BLOCK_S which is ordered in descending order of size of sub-block
  28. */
  29.  
  30. #define VMM_MEMORY        0x01
  31. #define VMM_DISK          0x02
  32.  
  33. #define VMM_OWNER_NONE    -1
  34.  
  35. #define VMM_STATE_MEMORY  0x01
  36. #define VMM_STATE_DISK    0x02
  37. #define VMM_STATE_EXTINCT 0x04
  38.  
  39. #define VMM_ERR_MEM_EXCEEDED 0x30
  40. #define VMM_ERR_INIT         0x31
  41. #define VMM_ERR_SWAP_FILE    0x32
  42.  
  43. /*
  44. **  VMM_BLOCK_S
  45. **
  46. **  Used for in-memory blocks AND free-blocks in swap file
  47. */
  48.  
  49. struct VMM_BLOCK_S
  50. {
  51.    LONG   lDescriptor;
  52.    SHORT   sBytes;
  53.    SHORT   sOwner;
  54.    SHORT   sState;
  55.    LONG    lOffset;  /* offset into swap file */
  56.    PVOID   pvBlock;
  57.    LONG    lTimeLastAccess;
  58.    struct VMM_BLOCK_S * pstMate;
  59. };
  60.  
  61. typedef struct VMM_BLOCK_S VMM_BLOCK_T;
  62. typedef VMM_BLOCK_T * VMM_BLOCK_P;
  63.  
  64.  
  65. #define VMM_FILE_NAME_LEN 64
  66.  
  67. struct VMM_MGR_S
  68. {
  69.    PVOID   pvBlock;             /* main memory block */
  70.    LONG    lTotalBytes;         /* size of main memory block */
  71.    LLIST_P pstMemList;          /* list of sub-allocated memory blocks */
  72.    LLIST_P pstFreeDiskBlocks;   /* list of disk swap blocks */
  73.    LONG    lSwapBytes;          /* largest offset of swap block */
  74.    LONG    lDescriptor;         /* descriptor seed, incremented */
  75.    CHAR    szSwapFile[VMM_FILE_NAME_LEN + 1];
  76.    FILE   *fpSwapFile;
  77.    VMM_BLOCK_P pstReloadBlock;  /* to id swap from disk to memory block */
  78. };
  79.  
  80. typedef struct VMM_MGR_S VMM_MGR_T;
  81. typedef VMM_MGR_T * VMM_MGR_P;
  82.   
  83.  
  84.  
  85. #ifdef C_ANSI
  86. SHORT VmmInit(SHORT,PCHAR);
  87. SHORT VmmAlloc(SHORT,SHORT,PLONG);
  88. SHORT VmmPrep(LONG,PPVOID);
  89. SHORT VmmFree(LONG);
  90. SHORT VmmTerm(VOID);
  91. SHORT VmmLoadFromDisk(VMM_BLOCK_P,SHORT);
  92. SHORT VmmAssignBlock(SHORT,SHORT,SHORT,VMM_BLOCK_P *);
  93. SHORT VmmSizeSwapToDisk(SHORT,SHORT,VMM_BLOCK_P *);
  94. SHORT VmmSwapToDisk(VMM_BLOCK_P,SHORT);
  95. SHORT VmmCreateDiskBlock(SHORT,VMM_BLOCK_P *);
  96. SHORT VmmSplitBlock(SHORT,VMM_BLOCK_P,SHORT,SHORT,VMM_BLOCK_P *);
  97. SHORT VmmCreateBlock(SHORT,SHORT,SHORT,PVOID,LONG,VMM_BLOCK_P *);
  98. SHORT VmmCompareBlockSize(PVOID, PVOID);
  99. SHORT VmmCompareHandle(PVOID, PVOID);
  100. SHORT VmmCompress(VOID);
  101. SHORT VmmVanishBlock(SHORT sType,VMM_BLOCK_P pstVanishBlock);
  102. LONG  VmmCurTime(VOID);
  103. #else
  104. SHORT VmmInit();
  105. SHORT VmmAlloc();
  106. SHORT VmmPrep();
  107. SHORT VmmFree();
  108. SHORT VmmTerm();
  109. SHORT VmmLoadFromDisk();
  110. SHORT VmmAssignBlock();
  111. SHORT VmmSizeSwapToDisk();
  112. SHORT VmmSwapToDisk();
  113. SHORT VmmCreateDiskBlock();
  114. SHORT VmmSplitBlock();
  115. SHORT VmmCompress();
  116. SHORT VmmCreateBlock();
  117. SHORT VmmCompareBlockSize();
  118. SHORT VmmCompareHandle();
  119. SHORT VmmVanishBlock();
  120. LONG  VmmCurTime();
  121. #endif
  122.  
  123.  
  124. #endif
  125.  
  126.  
  127.  
  128.