diff options
author | Brian Havard <bjh@apache.org> | 2002-01-28 05:32:32 +0000 |
---|---|---|
committer | Brian Havard <bjh@apache.org> | 2002-01-28 05:32:32 +0000 |
commit | c33e1fe26d428e10aa60ed8c694bc590acd06b01 (patch) | |
tree | 9c7daa72dfa79cf3baf72005865483b9682797a7 /shmem/os2 | |
parent | da860539003c12a93f51e27f20d43bd0db376b09 (diff) | |
download | apr-c33e1fe26d428e10aa60ed8c694bc590acd06b01.tar.gz |
OS/2: Implement apr_os_shm_get/put.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@62836 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'shmem/os2')
-rw-r--r-- | shmem/os2/shm.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/shmem/os2/shm.c b/shmem/os2/shm.c index cb922e7d7..9830ba205 100644 --- a/shmem/os2/shm.c +++ b/shmem/os2/shm.c @@ -57,6 +57,7 @@ #include "apr_errno.h" #include "apr_lib.h" #include "apr_strings.h" +#include "apr_portable.h" struct apr_shm_t { apr_pool_t *pool; @@ -149,13 +150,27 @@ APR_POOL_IMPLEMENT_ACCESSOR(shm) APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, apr_shm_t *shm) { - return APR_ENOTIMPL; + *osshm = shm->memblock; + return APR_SUCCESS; } APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, apr_os_shm_t *osshm, apr_pool_t *pool) { - return APR_ENOTIMPL; + int rc; + apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t)); + ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE; + + newm->pool = pool; + + rc = DosGetSharedMem(&(newm->memblock), flags); + + if (rc) { + return APR_FROM_OS_ERROR(rc); + } + + *m = newm; + return APR_SUCCESS; } |