summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h')
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h
new file mode 100644
index 00000000000..0692a051c78
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h
@@ -0,0 +1,84 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * shmem.h: Portable abstraction for memory shared among a server's workers
+ *
+ * Rob McCool
+ */
+
+
+#ifndef _SHMEM_H
+#define _SHMEM_H
+
+#include "netsite.h"
+#include "systems.h"
+
+
+/* --------------------------- Data structures ---------------------------- */
+
+
+#if defined (SHMEM_UNIX_MMAP) || defined (SHMEM_WIN32_MMAP)
+#include "file.h" /* SYS_FILE */
+
+typedef struct {
+ void *data; /* the data */
+#ifdef SHMEM_WIN32_MMAP
+ HANDLE fdmap;
+#endif /* SHMEM_WIN32_MMAP */
+ int size; /* the maximum length of the data */
+
+ char *name; /* internal use: filename to unlink if exposed */
+ SYS_FILE fd; /* internal use: file descriptor for region */
+} shmem_s;
+
+
+/* ------------------------------ Prototypes ------------------------------ */
+
+
+/*
+ * shmem_alloc allocates a region of shared memory of the given size, using
+ * the given name to avoid conflicts between multiple regions within the
+ * program. The region will not be automatically grown if its boundaries
+ * are over-run, use shmem_realloc for that.
+ *
+ * If expose is non-zero and the underlying system supports it, the
+ * file used to create the shared region will be visible to other processes
+ * running on the system.
+ *
+ * name should be unique to the program which calls this routine, otherwise
+ * conflicts will arise.
+ *
+ * Returns a new shared memory region, with the data element being a
+ * pointer to the shared memory. This function must be called before any
+ * daemon workers are spawned, in order for the handle to the shared region
+ * to be inherited by the children.
+ *
+ * Because of the requirement that the region must be inherited by the
+ * children, the region cannot be re-allocated with a larger size when
+ * necessary.
+ */
+shmem_s *shmem_alloc(char *name, int size, int expose);
+
+
+/*
+ * shmem_free de-allocates the specified region of shared memory.
+ */
+void shmem_free(shmem_s *region);
+
+#endif /* SHMEM_UNIX_MMAP || SHMEM_WIN32_MMAP */
+
+
+#endif