Index: mozilla/nsprpub/pr/include/prshma.h |
=================================================================== |
--- mozilla/nsprpub/pr/include/prshma.h (revision 191424) |
+++ mozilla/nsprpub/pr/include/prshma.h (working copy) |
@@ -1,239 +0,0 @@ |
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
-/* This Source Code Form is subject to the terms of the Mozilla Public |
- * License, v. 2.0. If a copy of the MPL was not distributed with this |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
- |
-/* |
-** prshma.h -- NSPR Anonymous Shared Memory |
-** |
-** NSPR provides an anonymous shared memory based on NSPR's PRFileMap |
-** type. The anonymous file-mapped shared memory provides an inheritable |
-** shared memory, as in: the child process inherits the shared memory. |
-** Compare the file-mapped anonymous shared memory to to a named shared |
-** memory described in prshm.h. The intent is to provide a shared |
-** memory that is accessable only by parent and child processes. ... |
-** It's a security thing. |
-** |
-** Depending on the underlying platform, the file-mapped shared memory |
-** may be backed by a file. ... surprise! ... On some platforms, no |
-** real file backs the shared memory. On platforms where the shared |
-** memory is backed by a file, the file's name in the filesystem is |
-** visible to other processes for only the duration of the creation of |
-** the file, hopefully a very short time. This restricts processess |
-** that do not inherit the shared memory from opening the file and |
-** reading or writing its contents. Further, when all processes |
-** using an anonymous shared memory terminate, the backing file is |
-** deleted. ... If you are not paranoid, you're not paying attention. |
-** |
-** The file-mapped shared memory requires a protocol for the parent |
-** process and child process to share the memory. NSPR provides two |
-** protocols. Use one or the other; don't mix and match. |
-** |
-** In the first protocol, the job of passing the inheritable shared |
-** memory is done via helper-functions with PR_CreateProcess(). In the |
-** second protocol, the parent process is responsible for creating the |
-** child process; the parent and child are mutually responsible for |
-** passing a FileMap string. NSPR provides helper functions for |
-** extracting data from the PRFileMap object. ... See the examples |
-** below. |
-** |
-** Both sides should adhere strictly to the protocol for proper |
-** operation. The pseudo-code below shows the use of a file-mapped |
-** shared memory by a parent and child processes. In the examples, the |
-** server creates the file-mapped shared memory, the client attaches to |
-** it. |
-** |
-** First protocol. |
-** Server: |
-** |
-** fm = PR_OpenAnonFileMap(dirName, size, FilemapProt); |
-** addr = PR_MemMap(fm); |
-** attr = PR_NewProcessAttr(); |
-** PR_ProcessAttrSetInheritableFileMap( attr, fm, shmname ); |
-** PR_CreateProcess(Client); |
-** PR_DestroyProcessAttr(attr); |
-** ... yadda ... |
-** PR_MemUnmap( addr ); |
-** PR_CloseFileMap(fm); |
-** |
-** |
-** Client: |
-** ... started by server via PR_CreateProcess() |
-** fm = PR_GetInheritedFileMap( shmname ); |
-** addr = PR_MemMap(fm); |
-** ... yadda ... |
-** PR_MemUnmap(addr); |
-** PR_CloseFileMap(fm); |
-** |
-** |
-** Second Protocol: |
-** Server: |
-** |
-** fm = PR_OpenAnonFileMap(dirName, size, FilemapProt); |
-** fmstring = PR_ExportFileMapAsString( fm ); |
-** addr = PR_MemMap(fm); |
-** ... application specific technique to pass fmstring to child |
-** ... yadda ... Server uses his own magic to create child |
-** PR_MemUnmap( addr ); |
-** PR_CloseFileMap(fm); |
-** |
-** |
-** Client: |
-** ... started by server via his own magic |
-** ... application specific technique to find fmstring from parent |
-** fm = PR_ImportFileMapFromString( fmstring ) |
-** addr = PR_MemMap(fm); |
-** ... yadda ... |
-** PR_MemUnmap(addr); |
-** PR_CloseFileMap(fm); |
-** |
-** |
-** lth. 2-Jul-1999. |
-** |
-** Note: The second protocol was requested by NelsonB (7/1999); this is |
-** to accomodate servers which already create their own child processes |
-** using platform native methods. |
-** |
-*/ |
- |
-#ifndef prshma_h___ |
-#define prshma_h___ |
- |
-#include "prtypes.h" |
-#include "prio.h" |
-#include "prproces.h" |
- |
-PR_BEGIN_EXTERN_C |
- |
-/* |
-** PR_OpenAnonFileMap() -- Creates an anonymous file-mapped shared memory |
-** |
-** Description: |
-** PR_OpenAnonFileMap() creates an anonymous shared memory. If the |
-** shared memory already exists, a handle is returned to that shared |
-** memory object. |
-** |
-** On Unix platforms, PR_OpenAnonFileMap() uses 'dirName' as a |
-** directory name, without the trailing '/', to contain the anonymous |
-** file. A filename is generated for the name. |
-** |
-** On Windows platforms, dirName is ignored. |
-** |
-** Inputs: |
-** dirName -- A directory name to contain the anonymous file. |
-** size -- The size of the shared memory |
-** prot -- How the shared memory is mapped. See prio.h |
-** |
-** Outputs: |
-** PRFileMap * |
-** |
-** Returns: |
-** Pointer to PRFileMap or NULL on error. |
-** |
-*/ |
-NSPR_API( PRFileMap *) |
-PR_OpenAnonFileMap( |
- const char *dirName, |
- PRSize size, |
- PRFileMapProtect prot |
-); |
- |
-/* |
-** PR_ProcessAttrSetInheritableFileMap() -- Prepare FileMap for export |
-** to my children processes via PR_CreateProcess() |
-** |
-** Description: |
-** PR_ProcessAttrSetInheritableFileMap() connects the PRFileMap to |
-** PRProcessAttr with shmname. A subsequent call to PR_CreateProcess() |
-** makes the PRFileMap importable by the child process. |
-** |
-** Inputs: |
-** attr -- PRProcessAttr, used to pass data to PR_CreateProcess() |
-** fm -- PRFileMap structure to be passed to the child process |
-** shmname -- The name for the PRFileMap; used by child. |
-** |
-** Outputs: |
-** PRFileMap * |
-** |
-** Returns: |
-** PRStatus |
-** |
-*/ |
-NSPR_API(PRStatus) |
-PR_ProcessAttrSetInheritableFileMap( |
- PRProcessAttr *attr, |
- PRFileMap *fm, |
- const char *shmname |
-); |
- |
-/* |
-** PR_GetInheritedFileMap() -- Import a PRFileMap previously exported |
-** by my parent process via PR_CreateProcess() |
-** |
-** Description: |
-** PR_GetInheritedFileMap() retrieves a PRFileMap object exported from |
-** its parent process via PR_CreateProcess(). |
-** |
-** Inputs: |
-** shmname -- The name provided to PR_ProcessAttrSetInheritableFileMap() |
-** |
-** Outputs: |
-** PRFileMap * |
-** |
-** Returns: |
-** PRFileMap pointer or NULL. |
-** |
-*/ |
-NSPR_API( PRFileMap *) |
-PR_GetInheritedFileMap( |
- const char *shmname |
-); |
- |
-/* |
-** PR_ExportFileMapAsString() -- Creates a string identifying a PRFileMap |
-** |
-** Description: |
-** Creates an identifier, as a string, from a PRFileMap object |
-** previously created with PR_OpenAnonFileMap(). |
-** |
-** Inputs: |
-** fm -- PRFileMap pointer to be represented as a string. |
-** bufsize -- sizeof(buf) |
-** buf -- a buffer of length PR_FILEMAP_STRING_BUFSIZE |
-** |
-** Outputs: |
-** buf contains the stringized PRFileMap identifier |
-** |
-** Returns: |
-** PRStatus |
-** |
-*/ |
-NSPR_API( PRStatus ) |
-PR_ExportFileMapAsString( |
- PRFileMap *fm, |
- PRSize bufsize, |
- char *buf |
-); |
-#define PR_FILEMAP_STRING_BUFSIZE 128 |
- |
-/* |
-** PR_ImportFileMapFromString() -- Creates a PRFileMap from the identifying string |
-** |
-** Description: |
-** PR_ImportFileMapFromString() creates a PRFileMap object from a |
-** string previously created by PR_ExportFileMapAsString(). |
-** |
-** Inputs: |
-** fmstring -- string created by PR_ExportFileMapAsString() |
-** |
-** Returns: |
-** PRFileMap pointer or NULL. |
-** |
-*/ |
-NSPR_API( PRFileMap * ) |
-PR_ImportFileMapFromString( |
- const char *fmstring |
-); |
- |
-PR_END_EXTERN_C |
-#endif /* prshma_h___ */ |