/* 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/. */
/*
* * 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
0 x1
/* create if not exist */
#define PR_SHM_EXCL
0 x2
/* 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
0 x01
/*
* * 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___ */
Messung V0.5 in Prozent C=90 H=98 G=94
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland