ucc::MappedMemory Class Reference

Construct or access a named section of memory. More...

#include <mapped.h>

Inheritance diagram for ucc::MappedMemory:
Inheritance graph
[legend]

Public Member Functions

 MappedMemory (const char *name, size_t size)
 Construct a read/write access mapped shared segment of memory of a known size.
 MappedMemory (const char *name)
 Provide read-only mapped access to an existing named shared memory segment.
virtual ~MappedMemory ()
 Unmap memory segment.
void release (void)
 Unmap memory segment.
 operator bool () const
 Test if map active.
bool operator! () const
 Test if map is inactive.
void * sbrk (size_t size)
 Extend size of managed heap on shared memory segment.
void * offset (size_t offset)
 Get memory from a specific offset within the mapped memory segment.
size_t len (void)
 Get size of mapped segment.
caddr_t getStart (void)
 Get starting address of mapped segment.

Static Public Member Functions

static void remove (const char *name)
 Destroy a previously existing memory segment under the specified name.
static void disable (void)
 An API that allows "disabling" of publishing shared memory maps.

Protected Member Functions

void create (const char *name, size_t size=(size_t) 0)
 Supporting function to construct a new or access an existing shared memory segment.
virtual void fault (void)
 Handler to invoke in derived class when accessing outside the shared memory segment boundry.

Protected Attributes

size_t size
size_t used

Detailed Description

Construct or access a named section of memory.

A logical name is used which might map to something that is invoked from a call like shm_open or a named w32 mapped swap segment. This is meant to support mapping a vector onto shared memory and is often used as a supporting class for our shared memory access templates.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 52 of file mapped.h.


Constructor & Destructor Documentation

ucc::MappedMemory::MappedMemory ( const char *  name,
size_t  size 
)

Construct a read/write access mapped shared segment of memory of a known size.

This constructs a new memory segment.

Parameters:
name of segment.
size of segment.
ucc::MappedMemory::MappedMemory ( const char *  name  ) 

Provide read-only mapped access to an existing named shared memory segment.

The size of the map is found by the size of the already existing segment.

Parameters:
name of existing segment.

Member Function Documentation

void ucc::MappedMemory::create ( const char *  name,
size_t  size = (size_t) 0 
) [protected]

Supporting function to construct a new or access an existing shared memory segment.

Used by primary constructors.

Parameters:
name of segment to create or access.
size of segment if creating new. Use 0 for read-only access.
static void ucc::MappedMemory::disable ( void   )  [static]

An API that allows "disabling" of publishing shared memory maps.

This may be useful when an app doesn't want to use shared memory as a runtime or build option, but does not want to have to be "recoded" exclicity for non-shared memory either. Basically it substitutes a dummy map running on the local heap.

caddr_t ucc::MappedMemory::getStart ( void   )  [inline]

Get starting address of mapped segment.

Returns:
starting address of mapped segment.

Definition at line 143 of file mapped.h.

size_t ucc::MappedMemory::len ( void   )  [inline]

Get size of mapped segment.

Returns:
size of mapped segment.

Definition at line 136 of file mapped.h.

void* ucc::MappedMemory::offset ( size_t  offset  ) 

Get memory from a specific offset within the mapped memory segment.

Parameters:
offset from start of segment. Will fault if past end.
Returns:
address of offset.
ucc::MappedMemory::operator bool (  )  const [inline]

Test if map active.

Returns:
true if active map.

Definition at line 106 of file mapped.h.

bool ucc::MappedMemory::operator! (  )  const [inline]

Test if map is inactive.

Returns:
true if map inactive.

Definition at line 113 of file mapped.h.

static void ucc::MappedMemory::remove ( const char *  name  )  [static]

Destroy a previously existing memory segment under the specified name.

This is used both before creating a new one, and after a publishing process unmaps the segment it created.

Parameters:
name of segment to remove.
void* ucc::MappedMemory::sbrk ( size_t  size  ) 

Extend size of managed heap on shared memory segment.

This does not change the size of the mapped segment in any way, only that of any heap space that is being allocated and used from the mapped segment.

Returns:
start of space from map.
Parameters:
size of space requested. Will fault if past end of segment.

The documentation for this class was generated from the following file:

Generated by  doxygen 1.6.2