summaryrefslogtreecommitdiff
path: root/shmem
diff options
context:
space:
mode:
authorBrian Havard <bjh@apache.org>2002-01-28 05:32:32 +0000
committerBrian Havard <bjh@apache.org>2002-01-28 05:32:32 +0000
commitc33e1fe26d428e10aa60ed8c694bc590acd06b01 (patch)
tree9c7daa72dfa79cf3baf72005865483b9682797a7 /shmem
parentda860539003c12a93f51e27f20d43bd0db376b09 (diff)
downloadapr-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')
-rw-r--r--shmem/os2/shm.c19
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;
}