Kaydet (Commit) 7ffe5108 authored tarafından Vladimir Glazounov's avatar Vladimir Glazounov

INTEGRATION: CWS os2port01 (1.3.64); FILE MERGED

2007/08/09 09:19:02 obr 1.3.64.2: RESYNC: (1.3-1.4); FILE MERGED
2006/11/29 14:26:53 ydario 1.3.64.1: Initial OS/2 import.
üst aebbb906
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
* *
* $RCSfile: alloc_arena.c,v $ * $RCSfile: alloc_arena.c,v $
* *
* $Revision: 1.4 $ * $Revision: 1.5 $
* *
* last change: $Author: vg $ $Date: 2007-05-25 13:09:36 $ * last change: $Author: vg $ $Date: 2007-09-20 15:23:50 $
* *
* The Contents of this file are made available subject to * The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1. * the terms of GNU Lesser General Public License Version 2.1.
...@@ -60,6 +60,13 @@ ...@@ -60,6 +60,13 @@
#include <stdio.h> #include <stdio.h>
#endif #endif
#include "sal/types.h"
#ifdef OS2
#undef OSL_TRACE
#define OSL_TRACE 1 ? ((void)0) : _OSL_GLOBAL osl_trace
#endif
/* ================================================================= * /* ================================================================= *
* *
* arena internals. * arena internals.
...@@ -1185,7 +1192,7 @@ SAL_CALL rtl_arena_free ( ...@@ -1185,7 +1192,7 @@ SAL_CALL rtl_arena_free (
#if defined(SAL_UNX) #if defined(SAL_UNX)
#include <sys/mman.h> #include <sys/mman.h>
#elif defined(SAL_W32) #elif defined(SAL_W32) || defined(SAL_OS2)
#define MAP_FAILED 0 #define MAP_FAILED 0
#endif /* SAL_UNX || SAL_W32 */ #endif /* SAL_UNX || SAL_W32 */
...@@ -1221,7 +1228,18 @@ SAL_CALL rtl_machdep_alloc ( ...@@ -1221,7 +1228,18 @@ SAL_CALL rtl_machdep_alloc (
addr = mmap (NULL, (size_t)(size), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); addr = mmap (NULL, (size_t)(size), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
#elif defined(SAL_W32) #elif defined(SAL_W32)
addr = VirtualAlloc (NULL, (SIZE_T)(size), MEM_COMMIT, PAGE_READWRITE); addr = VirtualAlloc (NULL, (SIZE_T)(size), MEM_COMMIT, PAGE_READWRITE);
#endif /* (SAL_UNX || SAL_W32) */ #elif defined(SAL_OS2)
{
APIRET rc;
addr = 0;
// Use DosAlloc* to get a 4KB page aligned address.
rc = DosAllocMem( &addr, size, PAG_COMMIT | PAG_READ | PAG_WRITE | OBJ_ANY);
if (rc) {
fprintf( stderr, "sal3::DosAllocMem failed rc=%d\n", rc);
addr = 0;
}
}
#endif /* (SAL_UNX || SAL_W32 || SAL_OS2) */
if (addr != MAP_FAILED) if (addr != MAP_FAILED)
{ {
...@@ -1254,6 +1272,8 @@ SAL_CALL rtl_machdep_free ( ...@@ -1254,6 +1272,8 @@ SAL_CALL rtl_machdep_free (
(void) munmap(pAddr, nSize); (void) munmap(pAddr, nSize);
#elif defined(SAL_W32) #elif defined(SAL_W32)
(void) VirtualFree ((LPVOID)(pAddr), (SIZE_T)(0), MEM_RELEASE); (void) VirtualFree ((LPVOID)(pAddr), (SIZE_T)(0), MEM_RELEASE);
#elif defined(SAL_OS2)
(void) DosFreeMem( pAddr);
#endif /* (SAL_UNX || SAL_W32) */ #endif /* (SAL_UNX || SAL_W32) */
} }
...@@ -1272,6 +1292,10 @@ rtl_machdep_pagesize (void) ...@@ -1272,6 +1292,10 @@ rtl_machdep_pagesize (void)
SYSTEM_INFO info; SYSTEM_INFO info;
GetSystemInfo (&info); GetSystemInfo (&info);
return ((sal_Size)(info.dwPageSize)); return ((sal_Size)(info.dwPageSize));
#elif defined(SAL_OS2)
ULONG ulPageSize;
DosQuerySysInfo(QSV_PAGE_SIZE, QSV_PAGE_SIZE, &ulPageSize, sizeof(ULONG));
return ((sal_Size)ulPageSize);
#endif /* (SAL_UNX || SAL_W32) */ #endif /* (SAL_UNX || SAL_W32) */
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment