source: trunk/src/kernel32/os2heap.h@ 99

Last change on this file since 99 was 99, checked in by phaller, 26 years ago

Add: added cvs variable $Id$ to source files.

File size: 1.5 KB
Line 
1/* $Id: os2heap.h,v 1.3 1999-06-10 19:11:30 phaller Exp $ */
2
3/*
4 *
5 * Project Odin Software License can be found in LICENSE.TXT
6 *
7 */
8/*
9 * Heap class for OS/2
10 *
11 * Copyright 1998 Sander van Leeuwen
12 *
13 */
14#ifndef __OS2HEAP_H__
15#define __OS2HEAP_H__
16
17#include "vmutex.h"
18
19typedef struct _tagHEAPELEM {
20 struct _tagHEAPELEM *prev;
21 struct _tagHEAPELEM *next;
22 DWORD flags; //set by LocalAlloc only
23 DWORD lockCnt; //LocalLock/Unlock
24} HEAPELEM;
25
26#define HEAP_OVERHEAD (sizeof(HEAPELEM)+60)
27//#define HEAP_OVERHEAD sizeof(HEAPELEM)
28
29class OS2Heap
30{
31public:
32 OS2Heap(HANDLE hHeap, DWORD flOptions, DWORD dwInitialSize, DWORD dwMaximumSize);
33 ~OS2Heap();
34
35 HANDLE getHeapHandle() { return(hPrimaryHeap); };
36
37 LPVOID Alloc(DWORD dwFlags, DWORD dwBytes);
38 LPVOID ReAlloc(DWORD dwFlags, LPVOID lpMem, DWORD dwBytes);
39 BOOL Free(DWORD dwFlags, LPVOID lpMem);
40 DWORD Size(DWORD dwFlags, PVOID lpMem);
41 DWORD Compact(DWORD dwFlags);
42 BOOL Validate(DWORD dwFlags, LPCVOID lpMem);
43 BOOL Walk(void *lpEntry);
44
45 LPVOID Alloc(DWORD dwFlags, DWORD dwBytes, DWORD LocalAllocFlags);
46 BOOL Lock(LPVOID lpMem);
47 BOOL Unlock(LPVOID lpMem);
48 int GetLockCnt(LPVOID lpMem);
49 DWORD GetFlags(LPVOID lpMem);
50
51 static OS2Heap *find(HANDLE hHeap);
52
53private:
54protected:
55
56 VMutex *hmutex;
57
58 DWORD dwMaximumSize, dwInitialSize, flOptions, totalAlloc, nrHeaps;
59 HANDLE hPrimaryHeap;
60 BOOL fInitialized;
61 HEAPELEM *heapelem;
62
63 OS2Heap *next;
64 static OS2Heap *heap;
65};
66
67#endif
Note: See TracBrowser for help on using the repository browser.