NAME

ACE_MMAP_Memory_Pool - Make a memory pool that is based on mmap(2). This implementation allows memory to be shared between processes.

SYNOPSIS


#include <ace/ACE_Memory_Pool.h>


class ACE_MMAP_Memory_Pool : public ACE_Event_Handler
{
  public:
    ACE_MMAP_Memory_Pool (
        const char *pool_name = 0,
        int use_fixed_addr = 1,
        int write_each_page = 1,
        char *base_addr = ACE_DEFAULT_BASE_ADDR
        );
    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 int remap (void *addr);
    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 &file_offset
        );
    virtual int map_file (off_t file_offset);
    virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
    ACE_Sig_Handler signal_handler_;
    ACE_Mem_Map mmap_;
    void *base_addr_;
    int flags_;
    const int write_each_page_;
    char backing_store_[MAXPATHLEN];
};

Initialization and termination methods.

ACE_MMAP_Memory_Pool (
    const char *pool_name = 0,
    int use_fixed_addr = 1,
    int write_each_page = 1,
    char *base_addr = ACE_DEFAULT_BASE_ADDR
    );
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 int remap (void *addr);
virtual void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;

Implement the algorithm for rounding up the request to an

appropriate chunksize.
virtual size_t round_up (size_t nbytes);
virtual int commit_backing_store (
    size_t rounded_bytes,
    off_t &file_offset
    );
virtual int map_file (off_t file_offset);
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
ACE_Sig_Handler signal_handler_;
ACE_Mem_Map mmap_;
void *base_addr_;
int flags_;
const int write_each_page_;
char backing_store_[MAXPATHLEN];

AUTHOR

Doug Schmidt and Prashant Jain

LIBRARY

ace