ACE 7.0.9
|
Make a memory pool that is based on System V shared memory (shmget(2) etc.). This implementation allows memory to be shared between processes. If your platform doesn't support System V shared memory (e.g., Win32 and many RTOS platforms do not) then you should use ACE_MMAP_Memory_Pool instead of this class. In fact, you should probably use ACE_MMAP_Memory_Pool on platforms that do support System V shared memory since it provides more powerful features, such as persistent backing store and greatly scalability. More...
#include <Shared_Memory_Pool.h>
Classes | |
struct | SHM_TABLE |
Keeps track of all the segments being used. More... | |
Public Types | |
typedef ACE_Shared_Memory_Pool_Options | OPTIONS |
![]() | |
enum | { LO_PRIORITY = 0 , HI_PRIORITY = 10 , NULL_MASK = 0 , READ_MASK = (1 << 0) , WRITE_MASK = (1 << 1) , EXCEPT_MASK = (1 << 2) , ACCEPT_MASK = (1 << 3) , CONNECT_MASK = (1 << 4) , TIMER_MASK = (1 << 5) , QOS_MASK = (1 << 6) , GROUP_QOS_MASK = (1 << 7) , SIGNAL_MASK = (1 << 8) , ALL_EVENTS_MASK , RWE_MASK , DONT_CALL = (1 << 9) } |
enum | { ACE_EVENT_HANDLER_NOT_RESUMED = -1 , ACE_REACTOR_RESUMES_HANDLER = 0 , ACE_APPLICATION_RESUMES_HANDLER } |
typedef long | Reference_Count |
Reference count type. More... | |
Public Member Functions | |
ACE_Shared_Memory_Pool (const ACE_TCHAR *backing_store_name=0, const OPTIONS *options=0) | |
Initialize the pool. More... | |
virtual | ~ACE_Shared_Memory_Pool ()=default |
virtual void * | init_acquire (size_t nbytes, size_t &rounded_bytes, int &first_time) |
Ask system for initial chunk of local memory. More... | |
virtual void * | acquire (size_t nbytes, size_t &rounded_bytes) |
Ask system for more shared memory. More... | |
virtual int | release (int destroy=1) |
Instruct the memory pool to release all of its resources. More... | |
virtual int | sync (ssize_t len=-1, int flags=MS_SYNC) |
virtual int | sync (void *addr, size_t len, int flags=MS_SYNC) |
Sync the memory region to the backing store starting at addr. More... | |
virtual int | protect (ssize_t len=-1, int prot=PROT_RDWR) |
virtual int | protect (void *addr, size_t len, int prot=PROT_RDWR) |
virtual void * | base_addr () const |
virtual void | dump () const |
Dump the state of an object. More... | |
![]() | |
virtual | ~ACE_Event_Handler ()=default |
Destructor is virtual to enable proper cleanup. More... | |
virtual ACE_HANDLE | get_handle () const |
Get the I/O handle. More... | |
virtual void | set_handle (ACE_HANDLE) |
Set the I/O handle. More... | |
virtual int | priority () const |
virtual void | priority (int priority) |
Set the priority of the Event_Handler. More... | |
virtual int | handle_input (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
Called when input events occur (e.g., connection or data). More... | |
virtual int | handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
virtual int | handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
Called when an exceptional events occur (e.g., SIGURG). More... | |
virtual int | handle_timeout (const ACE_Time_Value ¤t_time, const void *act=0) |
virtual int | handle_exit (ACE_Process *) |
Called when a process exits. More... | |
virtual int | handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask) |
virtual int | handle_signal (int signum, siginfo_t *=0, ucontext_t *=0) |
virtual int | resume_handler () |
virtual int | handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual int | handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual void | reactor (ACE_Reactor *reactor) |
Set the event demultiplexors. More... | |
virtual ACE_Reactor * | reactor () const |
Get the event demultiplexors. More... | |
virtual ACE_Reactor_Timer_Interface * | reactor_timer_interface () const |
Get only the reactor's timer related interface. More... | |
virtual Reference_Count | add_reference () |
Increment reference count on the handler. More... | |
virtual Reference_Count | remove_reference () |
Decrement reference count on the handler. More... | |
Reference_Counting_Policy & | reference_counting_policy () |
Current Reference_Counting_Policy. More... | |
Public Attributes | |
ACE_ALLOC_HOOK_DECLARE | |
Declare the dynamic allocation hooks. More... | |
Protected Member Functions | |
virtual size_t | round_up (size_t nbytes) |
virtual int | commit_backing_store_name (size_t rounded_bytes, ACE_OFF_T &offset) |
virtual int | find_seg (const void *const searchPtr, ACE_OFF_T &offset, size_t &counter) |
Find the segment that contains the searchPtr. More... | |
virtual int | in_use (ACE_OFF_T &offset, size_t &counter) |
Determine how much memory is currently in use. More... | |
virtual int | handle_signal (int, siginfo_t *siginfo, ucontext_t *) |
Handle SIGSEGV and SIGBUS signals to remap shared memory properly. More... | |
![]() | |
ACE_Event_Handler (ACE_Reactor *=nullptr, int priority=ACE_Event_Handler::LO_PRIORITY) | |
Force ACE_Event_Handler to be an abstract base class. More... | |
Protected Attributes | |
void * | base_addr_ |
size_t | file_perms_ |
File permissions to use when creating/opening a segment. More... | |
size_t | max_segments_ |
Number of shared memory segments in the <SHM_TABLE> table. More... | |
ACE_OFF_T | minimum_bytes_ |
What the minimim bytes of the initial segment should be. More... | |
size_t | segment_size_ |
Shared memory segment size. More... | |
key_t | base_shm_key_ |
Base shared memory key for the segment. More... | |
ACE_Sig_Handler | signal_handler_ |
Handles SIGSEGV. More... | |
![]() | |
Atomic_Reference_Count | reference_count_ |
Reference count. More... | |
Additional Inherited Members | |
![]() | |
static ACE_THR_FUNC_RETURN | read_adapter (void *event_handler) |
static int | register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED) |
static int | remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr) |
Performs the inverse of the register_stdin_handler() method. More... | |
![]() | |
typedef std::atomic< Reference_Count > | Atomic_Reference_Count |
Typedef for implementation of reference counting. More... | |
Make a memory pool that is based on System V shared memory (shmget(2) etc.). This implementation allows memory to be shared between processes. If your platform doesn't support System V shared memory (e.g., Win32 and many RTOS platforms do not) then you should use ACE_MMAP_Memory_Pool instead of this class. In fact, you should probably use ACE_MMAP_Memory_Pool on platforms that do support System V shared memory since it provides more powerful features, such as persistent backing store and greatly scalability.
ACE_Shared_Memory_Pool::ACE_Shared_Memory_Pool | ( | const ACE_TCHAR * | backing_store_name = 0 , |
const OPTIONS * | options = 0 |
||
) |
Initialize the pool.
|
virtualdefault |
|
virtual |
Ask system for more shared memory.
Acquire at least nbytes from the memory pool. rounded_byes is the actual number of bytes allocated. Also acquires an internal semaphore that ensures proper serialization of Memory_Pool initialization across processes.
|
virtual |
Return the base address of this memory pool, 0 if base_addr never changes.
|
protectedvirtual |
Commits a new shared memory segment if necessary after an acquire() or a signal. offset is set to the new offset into the backing store.
|
virtual |
Dump the state of an object.
|
protectedvirtual |
Find the segment that contains the searchPtr.
|
protectedvirtual |
Handle SIGSEGV and SIGBUS signals to remap shared memory properly.
Handle SIGSEGV and SIGBUS signals to remap shared memory properly.
Reimplemented from ACE_Event_Handler.
|
protectedvirtual |
Determine how much memory is currently in use.
|
virtual |
Ask system for initial chunk of local memory.
Ask system for initial chunk of shared memory.
Change the protection of the pages of the mapped region to prot starting at this->base_addr_
up to len bytes. If len == -1 then change protection of all pages in the mapped region.
|
virtual |
Change the protection of the pages of the mapped region to prot starting at addr up to len bytes.
|
virtual |
Instruct the memory pool to release all of its resources.
|
protectedvirtual |
Implement the algorithm for rounding up the request to an appropriate chunksize.
Sync the memory region to the backing store starting at this->base_addr_
.
|
virtual |
Sync the memory region to the backing store starting at addr.
ACE_Shared_Memory_Pool::ACE_ALLOC_HOOK_DECLARE |
Declare the dynamic allocation hooks.
|
protected |
Base address of the shared memory segment. If this has the value of 0 then the OS is free to select any address, otherwise this value is what the OS must try to use to map the shared memory segment.
|
protected |
Base shared memory key for the segment.
|
protected |
File permissions to use when creating/opening a segment.
|
protected |
Number of shared memory segments in the <SHM_TABLE> table.
|
protected |
What the minimim bytes of the initial segment should be.
|
protected |
Shared memory segment size.
|
protected |
Handles SIGSEGV.