COREMEM.DEF 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * COREMEM.DEF - Modula-2 interface to COREMEM.A *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *)
  11. (*# module(implementation=>off, init_code=>off) *)
  12. (*# name(prefix=>c) *)
  13. DEFINITION MODULE CoreMem;
  14. CONST
  15. _HEAPOK = 0;
  16. _HEAPEMPTY = -1;
  17. _HEAPBADBEGIN = -2;
  18. _HEAPBADNODE = -3;
  19. _HEAPOVERFLOW = -4;
  20. _HEAPEND = -5;
  21. _HEAPBADPTR = -6;
  22. TYPE
  23. _heapinfoptr = POINTER TO _heapinfo;
  24. _heapinfo = RECORD
  25. _pentry : _heapinfoptr;
  26. _size : CARDINAL;
  27. _useflag : CARDINAL;
  28. END;
  29. (* Exported Procedures *)
  30. PROCEDURE calloc(_num,_size: CARDINAL): ADDRESS;
  31. PROCEDURE free(_block: ADDRESS);
  32. PROCEDURE malloc(_size: CARDINAL): ADDRESS;
  33. PROCEDURE realloc(_block: ADDRESS; _size: CARDINAL): ADDRESS;
  34. PROCEDURE _msize(_buffer: ADDRESS): CARDINAL;
  35. PROCEDURE _memmax(): CARDINAL;
  36. PROCEDURE _memavl(): CARDINAL;
  37. PROCEDURE _heapchk(): INTEGER;
  38. PROCEDURE _heapset(_fill: CARDINAL): INTEGER;
  39. PROCEDURE _heapwalk(VAR _entry : _heapinfo): INTEGER;
  40. PROCEDURE _expand(buffer: ADDRESS; _size: CARDINAL): ADDRESS;
  41. PROCEDURE coreleft(): CARDINAL;
  42. PROCEDURE _freect(_size: CARDINAL): CARDINAL;
  43. (*# data(near_ptr=>on) *)
  44. (* **** ADDRESS after this point must be 16-bit. *)
  45. TYPE
  46. _nheapinfoptr = POINTER TO _nheapinfo;
  47. _nheapinfo = RECORD
  48. _pentry : _nheapinfoptr;
  49. _size : CARDINAL;
  50. _useflag : CARDINAL;
  51. END;
  52. PROCEDURE _ncalloc(num,_size: CARDINAL): NearADDRESS;
  53. PROCEDURE _nfree(_block: NearADDRESS);
  54. PROCEDURE _nmalloc(_size: CARDINAL): NearADDRESS;
  55. PROCEDURE _nrealloc(_block: NearADDRESS; _size: CARDINAL): NearADDRESS;
  56. PROCEDURE _nmsize(_buffer: NearADDRESS): CARDINAL;
  57. PROCEDURE _nheapchk(): INTEGER;
  58. PROCEDURE _nheapset(_fill: CARDINAL): INTEGER;
  59. PROCEDURE _nheapwalk(VAR _entry : _nheapinfo): INTEGER;
  60. PROCEDURE _nexpand(buffer: NearADDRESS; _size: CARDINAL): NearADDRESS;
  61. (*# data(near_ptr=>off) *)
  62. (* **** ADDRESS after this point must be 32-bit. *)
  63. TYPE
  64. _fheapinfoptr = POINTER TO _fheapinfo;
  65. _fheapinfo = RECORD
  66. _pentry : _fheapinfoptr;
  67. _size : CARDINAL;
  68. _useflag : CARDINAL;
  69. END;
  70. PROCEDURE _fcalloc(num,_size: CARDINAL): FarADDRESS;
  71. PROCEDURE _ffree(_block: FarADDRESS);
  72. PROCEDURE _fmalloc(_size: CARDINAL): FarADDRESS;
  73. PROCEDURE _frealloc(_block: FarADDRESS; _size: CARDINAL): FarADDRESS;
  74. PROCEDURE _fmsize(_buffer: FarADDRESS): CARDINAL;
  75. PROCEDURE _fheapchk(): INTEGER;
  76. PROCEDURE _fheapset(_fill: CARDINAL): INTEGER;
  77. PROCEDURE _fheapwalk(VAR _entry : _fheapinfo): INTEGER;
  78. PROCEDURE _fexpand(buffer: FarADDRESS; _size: CARDINAL): FarADDRESS;
  79. (* **** Huge objects still need to be handled. *)
  80. PROCEDURE hfree(_block: FarADDRESS);
  81. PROCEDURE halloc(_size: LONGCARD): FarADDRESS;
  82. PROCEDURE hrealloc(_block: FarADDRESS; _size: LONGCARD): FarADDRESS;
  83. VAR
  84. _MaxReallocHugeSegments: CARDINAL;
  85. PROCEDURE nearcoreleft(): CARDINAL;
  86. PROCEDURE farcoreleft(): LONGCARD;
  87. (*# restore *)
  88. PROCEDURE _fblockavail(): LONGCARD;
  89. PROCEDURE _shrink_mem;
  90. VAR
  91. _memtype: CARDINAL; (* OS2 memory allocation type *)
  92. _fheaptop: CARDINAL; (* top of far heap *)
  93. _firstfree: CARDINAL; (* first free block *)
  94. _fheapsem: LONGCARD; (* process control semaphore *)
  95. _nheapstart: CARDINAL; (* beginning of near heap *)
  96. _nheaptop: CARDINAL; (* end of near heap *)
  97. END CoreMem.
  98.