forked from mirrors/gecko-dev
		
	Depends on D137612 Differential Revision: https://phabricator.services.mozilla.com/D137650
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
The chapter describes the NSPR API for named shared memory. Shared
 | 
						|
memory allows multiple processes to access one or more common shared
 | 
						|
memory regions, using it as an interprocess communication channel. The
 | 
						|
NSPR shared memory API provides a cross-platform named shared-memory
 | 
						|
interface that is modeled on similar constructs in the Unix and Windows
 | 
						|
operating systems.
 | 
						|
 | 
						|
-  `Shared Memory Protocol <#Shared_Memory_Protocol>`__
 | 
						|
-  `Named Shared Memory Functions <#Named_Shared_Memory_Functions>`__
 | 
						|
 | 
						|
.. _Shared_Memory_Protocol:
 | 
						|
 | 
						|
Shared Memory Protocol
 | 
						|
----------------------
 | 
						|
 | 
						|
.. _Using_Named_Shared_Memory_Functions:
 | 
						|
 | 
						|
Using Named Shared Memory Functions
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
:ref:`PR_OpenSharedMemory` creates the shared memory segment, if it does
 | 
						|
not already exist, or opens a connection with the existing shared memory
 | 
						|
segment if it already exists.
 | 
						|
 | 
						|
:ref:`PR_AttachSharedMemory` should be called following
 | 
						|
:ref:`PR_OpenSharedMemory` to map the memory segment to an address in the
 | 
						|
application's address space. :ref:`PR_AttachSharedMemory` may also be
 | 
						|
called to remap a shared memory segment after detaching the same
 | 
						|
``PRSharedMemory`` object. Be sure to detach it when you're finished.
 | 
						|
 | 
						|
:ref:`PR_DetachSharedMemory` should be called to unmap the shared memory
 | 
						|
segment from the application's address space.
 | 
						|
 | 
						|
:ref:`PR_CloseSharedMemory` should be called when no further use of the
 | 
						|
``PRSharedMemory`` object is required within a process. Following a call
 | 
						|
to :ref:`PR_CloseSharedMemory`, the ``PRSharedMemory`` object is invalid
 | 
						|
and cannot be reused.
 | 
						|
 | 
						|
:ref:`PR_DeleteSharedMemory` should be called before process termination.
 | 
						|
After you call :ref:`PR_DeleteSharedMemory`, any further use of the shared
 | 
						|
memory associated with the name may cause unpredictable results.
 | 
						|
 | 
						|
Filenames
 | 
						|
~~~~~~~~~
 | 
						|
 | 
						|
The name passed to :ref:`PR_OpenSharedMemory` should be a valid filename
 | 
						|
for a Unix platform. :ref:`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 be
 | 
						|
used to define the namespace. On Windows, the name is significant, but
 | 
						|
there is no file associated with the 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 :ref:`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_on_Shared_Memory_Resources:
 | 
						|
 | 
						|
Limits on Shared Memory Resources
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
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 accommodate more and/or larger shared memory
 | 
						|
segment(s).
 | 
						|
 | 
						|
.. _Security_Considerations:
 | 
						|
 | 
						|
Security Considerations
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
.. _Named_Shared_Memory_Functions:
 | 
						|
 | 
						|
Named Shared Memory Functions
 | 
						|
-----------------------------
 | 
						|
 | 
						|
 - :ref:`PR_OpenSharedMemory`
 | 
						|
 - :ref:`PR_AttachSharedMemory`
 | 
						|
 - :ref:`PR_DetachSharedMemory`
 | 
						|
 - :ref:`PR_CloseSharedMemory`
 | 
						|
 - :ref:`PR_DeleteSharedMemory`
 |