- Timestamp:
- Jul 16, 2002, 10:16:48 AM (23 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/oslibmem.cpp
r8877 r8882 1 /* $Id: oslibmem.cpp,v 1. 3 2002-07-15 14:28:52sandervl Exp $ */1 /* $Id: oslibmem.cpp,v 1.4 2002-07-16 08:16:47 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 94 94 //Allocate memory aligned at 64kb boundary 95 95 //****************************************************************************** 96 DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD cbSize, DWORD flFlags )96 DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD cbSize, DWORD flFlags, BOOL fLowMemory) 97 97 { 98 98 PVOID pvMemAddr; 99 99 DWORD offset; 100 100 APIRET rc; 101 101 BOOL fMemFlags = flAllocMem; 102 103 //Override low/high memory flag if necessary 104 if(fLowMemory) { 105 fMemFlags = 0; 106 } 102 107 /* 103 108 * Let's try use the extended DosAllocMem API of Win32k.sys. … … 105 110 if (libWin32kInstalled()) 106 111 { 107 rc = DosAllocMemEx(lplpMemAddr, cbSize, flFlags | f lAllocMem| OBJ_ALIGN64K);112 rc = DosAllocMemEx(lplpMemAddr, cbSize, flFlags | fMemFlags | OBJ_ALIGN64K); 108 113 if (rc != ERROR_NOT_SUPPORTED) /* This call was stubbed until recently. */ 109 114 return rc; … … 114 119 */ 115 120 116 rc = DosAllocMem(&pvMemAddr, cbSize, flFlags | f lAllocMem);121 rc = DosAllocMem(&pvMemAddr, cbSize, flFlags | fMemFlags); 117 122 if(rc) { 118 123 dprintf(("!ERROR!: DosAllocMem failed with rc %d", rc)); … … 128 133 129 134 //Allocate 64kb more so we can round the address to a 64kb aligned value 130 rc = DosAllocMem((PPVOID)&addr64kb, cbSize + 64*1024, (flFlags & ~PAG_COMMIT) | f lAllocMem);135 rc = DosAllocMem((PPVOID)&addr64kb, cbSize + 64*1024, (flFlags & ~PAG_COMMIT) | fMemFlags); 131 136 if(rc) { 132 137 dprintf(("!ERROR!: DosAllocMem failed with rc %d", rc)); -
trunk/src/kernel32/oslibmem.h
r8877 r8882 1 /* $Id: oslibmem.h,v 1. 1 2002-07-15 14:28:52sandervl Exp $ */1 /* $Id: oslibmem.h,v 1.2 2002-07-16 08:16:48 sandervl Exp $ */ 2 2 /* 3 3 * OS/2 Memory management procedures … … 42 42 43 43 DWORD OSLibDosAliasMem(LPVOID pb, ULONG cb, LPVOID *ppbAlias, ULONG fl); 44 DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD size, DWORD flags );44 DWORD OSLibDosAllocMem(LPVOID *lplpMemAddr, DWORD size, DWORD flags, BOOL fLowMemory = FALSE); 45 45 DWORD OSLibDosFreeMem(LPVOID lpMemAddr); 46 46 DWORD OSLibDosQueryMem(LPVOID lpMemAddr, DWORD *lpRangeSize, DWORD *lpAttr); -
trunk/src/kernel32/winimagepeldr.cpp
r8877 r8882 1 /* $Id: winimagepeldr.cpp,v 1.9 6 2002-07-15 14:28:53sandervl Exp $ */1 /* $Id: winimagepeldr.cpp,v 1.97 2002-07-16 08:16:48 sandervl Exp $ */ 2 2 3 3 /* … … 431 431 } 432 432 433 dprintf((LOG, "OS/2 base address %x", realBaseAddress ));433 dprintf((LOG, "OS/2 base address %x", realBaseAddress )); 434 434 if(oh.AddressOfEntryPoint) { 435 435 entryPoint = realBaseAddress + oh.AddressOfEntryPoint; … … 999 999 ULONG diff, i, baseAddress; 1000 1000 APIRET rc; 1001 BOOL allocFlags = flAllocMem;1001 BOOL fLowMemory = FALSE; 1002 1002 1003 1003 //Reserve enough space to store 4096 pointers to 1MB memory chunks … … 1009 1009 1010 1010 if(oh.ImageBase < 512*1024*1024) { 1011 allocFlags = 0;1011 fLowMemory = TRUE; 1012 1012 } 1013 1013 while(TRUE) { 1014 rc = OSLibDosAllocMem((PPVOID)&address, FALLOC_SIZE, PAG_READ | allocFlags);1014 rc = OSLibDosAllocMem((PPVOID)&address, FALLOC_SIZE, PAG_READ, fLowMemory); 1015 1015 if(rc) break; 1016 1016 … … 1026 1026 diff = oh.ImageBase - address; 1027 1027 if(diff) { 1028 rc = OSLibDosAllocMem((PPVOID)&address, diff, PAG_READ | allocFlags);1028 rc = OSLibDosAllocMem((PPVOID)&address, diff, PAG_READ, fLowMemory); 1029 1029 if(rc) break; 1030 1030 } 1031 rc = OSLibDosAllocMem((PPVOID)&baseAddress, imageSize, PAG_READ | PAG_WRITE | allocFlags);1031 rc = OSLibDosAllocMem((PPVOID)&baseAddress, imageSize, PAG_READ | PAG_WRITE, fLowMemory); 1032 1032 if(rc) break; 1033 1033
Note:
See TracChangeset
for help on using the changeset viewer.