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

Last change on this file since 46 was 46, checked in by sandervl, 26 years ago

* empty log message *

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