Index: third_party/nspr/mozilla/nsprpub/pr/include/prshm.h |
diff --git a/third_party/nspr/mozilla/nsprpub/pr/include/prshm.h b/third_party/nspr/mozilla/nsprpub/pr/include/prshm.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..098566ec7fe425ce7b6e01e536bd1ddd80dd33ce |
--- /dev/null |
+++ b/third_party/nspr/mozilla/nsprpub/pr/include/prshm.h |
@@ -0,0 +1,289 @@ |
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
+/* ***** BEGIN LICENSE BLOCK ***** |
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
+ * |
+ * The contents of this file are subject to the Mozilla Public License Version |
+ * 1.1 (the "License"); you may not use this file except in compliance with |
+ * the License. You may obtain a copy of the License at |
+ * http://www.mozilla.org/MPL/ |
+ * |
+ * Software distributed under the License is distributed on an "AS IS" basis, |
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
+ * for the specific language governing rights and limitations under the |
+ * License. |
+ * |
+ * The Original Code is the Netscape Portable Runtime (NSPR). |
+ * |
+ * The Initial Developer of the Original Code is |
+ * Netscape Communications Corporation. |
+ * Portions created by the Initial Developer are Copyright (C) 1999-2000 |
+ * the Initial Developer. All Rights Reserved. |
+ * |
+ * Contributor(s): |
+ * |
+ * Alternatively, the contents of this file may be used under the terms of |
+ * either the GNU General Public License Version 2 or later (the "GPL"), or |
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
+ * in which case the provisions of the GPL or the LGPL are applicable instead |
+ * of those above. If you wish to allow use of your version of this file only |
+ * under the terms of either the GPL or the LGPL, and not to allow others to |
+ * use your version of this file under the terms of the MPL, indicate your |
+ * decision by deleting the provisions above and replace them with the notice |
+ * and other provisions required by the GPL or the LGPL. If you do not delete |
+ * the provisions above, a recipient may use your version of this file under |
+ * the terms of any one of the MPL, the GPL or the LGPL. |
+ * |
+ * ***** END LICENSE BLOCK ***** */ |
+ |
+/* |
+** prshm.h -- NSPR Shared Memory |
+** |
+** NSPR Named Shared Memory API provides a cross-platform named |
+** shared-memory interface. NSPR Named Shared Memory is modeled on |
+** similar constructs in Unix and Windows operating systems. Shared |
+** memory allows multiple processes to access one or more common shared |
+** memory regions, using it as an inter-process communication channel. |
+** |
+** Notes on Platform Independence: |
+** NSPR Named Shared Memory is built on the native services offered |
+** by most platforms. The NSPR Named Shared Memory API tries to |
+** provide a least common denominator interface so that it works |
+** across all supported platforms. To ensure that it works everywhere, |
+** some platform considerations must be accomodated and the protocol |
+** for using NSPR Shared Memory API must be observed. |
+** |
+** Protocol: |
+** Multiple shared memories can be created using NSPR's Shared Memory |
+** feature. For each named shared memory, as defined by the name |
+** given in the PR_OpenSharedMemory() call, a protocol for using the |
+** shared memory API is required to ensure desired behavior. Failing |
+** to follow the protocol may yield unpredictable results. |
+** |
+** PR_OpenSharedMemory() will create the shared memory segment, if it |
+** does not already exist, or open a connection that the existing |
+** shared memory segment if it already exists. |
+** |
+** PR_AttachSharedMemory() should be called following |
+** PR_OpenSharedMemory() to map the memory segment to an address in |
+** the application's address space. |
+** |
+** PR_AttachSharedMemory() may be called to re-map a shared memory |
+** segment after detaching the same PRSharedMemory object. Be |
+** sure to detach it when done. |
+** |
+** PR_DetachSharedMemory() should be called to un-map the shared |
+** memory segment from the application's address space. |
+** |
+** PR_CloseSharedMemory() should be called when no further use of the |
+** PRSharedMemory object is required within a process. Following a |
+** call to PR_CloseSharedMemory() the PRSharedMemory object is |
+** invalid and cannot be reused. |
+** |
+** PR_DeleteSharedMemory() should be called before process |
+** termination. After calling PR_DeleteSharedMemory() any further use |
+** of the shared memory associated with the name may cause |
+** unpredictable results. |
+** |
+** Files: |
+** The name passed to PR_OpenSharedMemory() should be a valid filename |
+** for a unix platform. PR_OpenSharedMemory() creates file using the |
+** name passed in. Some platforms may mangle the name before creating |
+** the file and the shared memory. |
+** |
+** The unix implementation may use SysV IPC shared memory, Posix |
+** shared memory, or memory mapped files; the filename may used to |
+** define the namespace. On Windows, the name is significant, but |
+** there is no file associated with name. |
+** |
+** No assumptions about the persistence of data in the named file |
+** should be made. Depending on platform, the shared memory may be |
+** mapped onto system paging space and be discarded at process |
+** termination. |
+** |
+** All names provided to PR_OpenSharedMemory() should be valid |
+** filename syntax or name syntax for shared memory for the target |
+** platform. Referenced directories should have permissions |
+** appropriate for writing. |
+** |
+** Limits: |
+** Different platforms have limits on both the number and size of |
+** shared memory resources. The default system limits on some |
+** platforms may be smaller than your requirements. These limits may |
+** be adjusted on some platforms either via boot-time options or by |
+** setting the size of the system paging space to accomodate more |
+** and/or larger shared memory segment(s). |
+** |
+** Security: |
+** On unix platforms, depending on implementation, contents of the |
+** backing store for the shared memory can be exposed via the file |
+** system. Set permissions and or access controls at create and attach |
+** time to ensure you get the desired security. |
+** |
+** On windows platforms, no special security measures are provided. |
+** |
+** Example: |
+** The test case pr/tests/nameshm1.c provides an example of use as |
+** well as testing the operation of NSPR's Named Shared Memory. |
+** |
+** lth. 18-Aug-1999. |
+*/ |
+ |
+#ifndef prshm_h___ |
+#define prshm_h___ |
+ |
+#include "prtypes.h" |
+#include "prio.h" |
+ |
+PR_BEGIN_EXTERN_C |
+ |
+/* |
+** Declare opaque type PRSharedMemory. |
+*/ |
+typedef struct PRSharedMemory PRSharedMemory; |
+ |
+/* |
+** FUNCTION: PR_OpenSharedMemory() |
+** |
+** DESCRIPTION: |
+** PR_OpenSharedMemory() creates a new shared-memory segment or |
+** associates a previously created memory segment with name. |
+** |
+** When parameter create is (PR_SHM_EXCL | PR_SHM_CREATE) and the |
+** shared memory already exists, the function returns NULL with the |
+** error set to PR_FILE_EXISTS_ERROR. |
+** |
+** When parameter create is PR_SHM_CREATE and the shared memory |
+** already exists, a handle to that memory segment is returned. If |
+** the segment does not exist, it is created and a pointer to the |
+** related PRSharedMemory structure is returned. |
+** |
+** When parameter create is 0, and the shared memory exists, a |
+** pointer to a PRSharedMemory is returned. If the shared memory does |
+** not exist, NULL is returned with the error set to |
+** PR_FILE_NOT_FOUND_ERROR. |
+** |
+** INPUTS: |
+** name -- the name the shared-memory segment is known as. |
+** size -- the size of the shared memory segment. |
+** flags -- Options for creating the shared memory |
+** mode -- Same as is passed to PR_Open() |
+** |
+** OUTPUTS: |
+** The shared memory is allocated. |
+** |
+** RETURNS: Pointer to opaque structure PRSharedMemory or NULL. |
+** NULL is returned on error. The reason for the error can be |
+** retrieved via PR_GetError() and PR_GetOSError(); |
+** |
+*/ |
+NSPR_API( PRSharedMemory * ) |
+ PR_OpenSharedMemory( |
+ const char *name, |
+ PRSize size, |
+ PRIntn flags, |
+ PRIntn mode |
+); |
+/* Define values for PR_OpenShareMemory(...,create) */ |
+#define PR_SHM_CREATE 0x1 /* create if not exist */ |
+#define PR_SHM_EXCL 0x2 /* fail if already exists */ |
+ |
+/* |
+** FUNCTION: PR_AttachSharedMemory() |
+** |
+** DESCRIPTION: |
+** PR_AttachSharedMemory() maps the shared-memory described by |
+** shm to the current process. |
+** |
+** INPUTS: |
+** shm -- The handle returned from PR_OpenSharedMemory(). |
+** flags -- options for mapping the shared memory. |
+** PR_SHM_READONLY causes the memory to be attached |
+** read-only. |
+** |
+** OUTPUTS: |
+** On success, the shared memory segment represented by shm is mapped |
+** into the process' address space. |
+** |
+** RETURNS: Address where shared memory is mapped, or NULL. |
+** NULL is returned on error. The reason for the error can be |
+** retrieved via PR_GetError() and PR_GetOSError(); |
+** |
+** |
+*/ |
+NSPR_API( void * ) |
+ PR_AttachSharedMemory( |
+ PRSharedMemory *shm, |
+ PRIntn flags |
+); |
+/* Define values for PR_AttachSharedMemory(...,flags) */ |
+#define PR_SHM_READONLY 0x01 |
+ |
+/* |
+** FUNCTION: PR_DetachSharedMemory() |
+** |
+** DESCRIPTION: |
+** PR_DetachSharedMemory() detaches the shared-memory described |
+** by shm. |
+** |
+** INPUTS: |
+** shm -- The handle returned from PR_OpenSharedMemory(). |
+** addr -- The address at which the memory was attached. |
+** |
+** OUTPUTS: |
+** The shared memory mapped to an address via a previous call to |
+** PR_AttachSharedMemory() is unmapped. |
+** |
+** RETURNS: PRStatus |
+** |
+*/ |
+NSPR_API( PRStatus ) |
+ PR_DetachSharedMemory( |
+ PRSharedMemory *shm, |
+ void *addr |
+); |
+ |
+/* |
+** FUNCTION: PR_CloseSharedMemory() |
+** |
+** DESCRIPTION: |
+** PR_CloseSharedMemory() closes the shared-memory described by |
+** shm. |
+** |
+** INPUTS: |
+** shm -- The handle returned from PR_OpenSharedMemory(). |
+** |
+** OUTPUTS: |
+** the shared memory represented by shm is closed |
+** |
+** RETURNS: PRStatus |
+** |
+*/ |
+NSPR_API( PRStatus ) |
+ PR_CloseSharedMemory( |
+ PRSharedMemory *shm |
+); |
+ |
+/* |
+** FUNCTION: PR_DeleteSharedMemory() |
+** |
+** DESCRIPTION: |
+** The shared memory resource represented by name is released. |
+** |
+** INPUTS: |
+** name -- the name the shared-memory segment |
+** |
+** OUTPUTS: |
+** depending on platform, resources may be returned to the underlying |
+** operating system. |
+** |
+** RETURNS: PRStatus |
+** |
+*/ |
+NSPR_API( PRStatus ) |
+ PR_DeleteSharedMemory( |
+ const char *name |
+); |
+ |
+PR_END_EXTERN_C |
+ |
+#endif /* prshm_h___ */ |