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: typedef ACE_MMAP_Memory_Pool_Options OPTIONS; ACE_MMAP_Memory_Pool ( LPCTSTR backing_store_name = 0, const OPTIONS *options = 0 ); virtual ~ACE_MMAP_Memory_Pool (void); 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 seh_selector (void *); virtual int remap (void *addr); virtual void *base_addr (void) const; virtual void dump (void) const; ACE_ALLOC_HOOK_DECLARE; protected: virtual size_t round_up (size_t nbytes); virtual int commit_backing_store_name ( size_t rounded_bytes, off_t &map_size ); virtual int map_file (off_t map_size); virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); ACE_Sig_Handler signal_handler_; ACE_Mem_Map mmap_; void *base_addr_; int flags_; int write_each_page_; off_t minimum_bytes_; TCHAR backing_store_name_[MAXPATHLEN + 1]; int guess_on_fault_; LPSECURITY_ATTRIBUTES sa_; };

Initialization and termination methods.

ACE_MMAP_Memory_Pool (
    LPCTSTR backing_store_name = 0,
    const OPTIONS *options = 0
    );

virtual ~ACE_MMAP_Memory_Pool (void);

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 seh_selector (void *);

virtual int remap (void *addr);

virtual void *base_addr (void) const;

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_name (
    size_t rounded_bytes,
    off_t &map_size
    );

virtual int map_file (off_t map_size);

virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);

ACE_Sig_Handler signal_handler_;

ACE_Mem_Map mmap_;

void *base_addr_;

int flags_;

int write_each_page_;

off_t minimum_bytes_;

TCHAR backing_store_name_[MAXPATHLEN + 1];

int guess_on_fault_;

LPSECURITY_ATTRIBUTES sa_;

AUTHOR

Doug Schmidt and Prashant Jain

LIBRARY

ace