Changeset 6954 for trunk/src/kernel32/os2heap.cpp
- Timestamp:
- Oct 6, 2001, 8:53:11 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/os2heap.cpp
r6412 r6954 1 /* $Id: os2heap.cpp,v 1.2 3 2001-07-30 12:01:24sandervl Exp $ */1 /* $Id: os2heap.cpp,v 1.24 2001-10-06 18:53:11 sandervl Exp $ */ 2 2 3 3 /* … … 43 43 44 44 void * _LNK_CONV getmoreHeapMem(Heap_t pHeap, size_t *size, int *clean); 45 void _LNK_CONVreleaseHeapMem(Heap_t pHeap, void *block, size_t size);45 void _LNK_CONV releaseHeapMem(Heap_t pHeap, void *block, size_t size); 46 46 47 47 //****************************************************************************** … … 61 61 this->dwInitialSize = dwInitialSize; 62 62 this->flOptions = flOptions; 63 64 if(!(flOptions & HEAP_NO_SERIALIZE))65 {66 hmutex = new VMutex();67 dassert(hmutex, ("ERROR: new VMutex\n"));68 }69 else hmutex = NULL;70 63 71 64 heaplistmutex.enter(); … … 104 97 { 105 98 OS2Heap *curheap = OS2Heap::heap; 106 HEAPELEM *hnext;107 99 int i; 108 100 109 101 dprintf(("dtr OS2Heap, hPrimaryHeap = %X\n", hPrimaryHeap)); 110 111 if(hmutex)112 hmutex->enter();113 114 while(heapelem) {115 hnext = heapelem->next;116 free(heapelem->lpMem);117 heapelem = hnext;118 }119 if(hmutex)120 {121 hmutex->leave();122 delete(hmutex);123 }124 102 125 103 heaplistmutex.enter(); … … 171 149 lpHeapObj = (HEAPELEM *)(((ULONG)lpMem+7) & ~7); 172 150 lpHeapObj->lpMem = lpMem; 173 174 if(hmutex)175 hmutex->enter();176 177 lpHeapObj->next = heapelem;178 lpHeapObj->prev = NULL;179 151 lpHeapObj->magic = MAGIC_NR_HEAP; 180 if(heapelem) { 181 heapelem->prev = lpHeapObj; 182 } 183 heapelem = lpHeapObj; 184 185 if(hmutex) { 186 hmutex->leave(); 187 } 152 188 153 return(LPVOID)(lpHeapObj+1); 189 154 } … … 278 243 totalAlloc -= size; 279 244 #endif 280 if(hmutex)281 hmutex->enter();282 283 if(helem->prev)284 helem->prev->next = helem->next;285 if(helem->next)286 helem->next->prev = helem->prev;287 if(heapelem == helem)288 heapelem = heapelem->next;289 290 if(hmutex) {291 hmutex->leave();292 }293 245 294 246 free(helem->lpMem); … … 371 323 *size = (*size / 4096) * 4096 + 4096; 372 324 373 rc = DosAllocMem(&newblock, *size, PAG_READ|PAG_WRITE|PAG_COMMIT|PAG_EXECUTE);325 rc = DosAllocMem(&newblock, *size, flAllocMem|PAG_READ|PAG_WRITE|PAG_COMMIT|PAG_EXECUTE); 374 326 if(rc != 0) { 375 327 dprintf(("getmoreHeapMem: DosAllocMem failed with %d", rc)); 376 328 return FALSE; 377 329 } 330 success: 378 331 *clean = _BLOCK_CLEAN; 379 332 dprintf(("KERNEL32: getmoreHeapMem %x %d", newblock, *size));
Note:
See TracChangeset
for help on using the changeset viewer.