NAME

ACE_Shared_Memory_Pool - Make a memory pool that is based on System V shared memory (shmget(2) etc.). This implementation allows memory to be shared between processes.

SYNOPSIS


#include <ace/ACE_Memory_Pool.h>


class ACE_Shared_Memory_Pool : public ACE_Event_Handler
{
  public:
    ACE_Shared_Memory_Pool (
        const char *pool_name = ACE_ITOA (ACE_DEFAULT_SHM_KEY)
        );
    virtual void *init_acquire (
        size_t nbytes,
        size_t &rounded_bytes,
        int &first_time
        );
    virtual void *acquire (size_t nbytes, size_t &rounded_bytes);
    virtual int release (void);
    virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
    virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
    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 dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  protected:
    virtual size_t round_up (size_t nbytes);
    virtual int commit_backing_store (
        size_t rounded_bytes,
        off_t &offset
        );

    struct SHM_TABLE
    {
      public:
        key_t key;
        int shmid;
        int used;
    };

virtual int in_use (off_t &offset, int &counter); ACE_Sig_Handler signal_handler_; virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); ACE_SV_Semaphore_Complex init_finished_; };

PUBLIC MEMBERS

ACE_Shared_Memory_Pool (
    const char *pool_name = ACE_ITOA (ACE_DEFAULT_SHM_KEY)
    );
virtual void *init_acquire (
    size_t nbytes,
    size_t &rounded_bytes,
    int &first_time
    );
virtual void *acquire (size_t nbytes, size_t &rounded_bytes);
virtual int release (void);
virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
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 dump (void) const;
ACE_ALLOC_HOOK_DECLARE;

PROTECTED MEMBERS

virtual size_t round_up (size_t nbytes);
virtual int commit_backing_store (
    size_t rounded_bytes,
    off_t &offset
    );
virtual int in_use (off_t &offset, int &counter);
ACE_Sig_Handler signal_handler_;
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
ACE_SV_Semaphore_Complex init_finished_;

AUTHOR

Doug Schmidt and Prashant Jain

LIBRARY

ace