Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Static_Allocator_Base Class Reference

Defines a class that provided a highly optimized memory management scheme for allocating memory statically. More...

#include <Malloc_Allocator.h>

Inheritance diagram for ACE_Static_Allocator_Base:

Inheritance graph
[legend]
Collaboration diagram for ACE_Static_Allocator_Base:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Static_Allocator_Base (char *buffer, size_t size)
virtual void * malloc (size_t nbytes)
 Allocate <nbytes>, but don't give them any initial value. More...

virtual void * calloc (size_t nbytes, char initial_value='\0')
 Allocate <nbytes>, giving them <initial_value>. More...

virtual void * calloc (size_t n_elem, size_t elem_size, char initial_value='\0')
 Allocate <n_elem> each of size <elem_size>, giving them <initial_value>. More...

virtual void free (void *ptr)
 Free <ptr> (must have been allocated by <ACE_Allocator::malloc>). More...

virtual int remove (void)
 Remove any resources associated with this memory manager. More...

virtual int bind (const char *name, void *pointer, int duplicates=0)
virtual int trybind (const char *name, void *&pointer)
virtual int find (const char *name, void *&pointer)
 Locate <name> and pass out parameter via pointer. If found, return 0, returns -1 if failure occurs. More...

virtual int find (const char *name)
 Returns 0 if the name is in the mapping. -1, otherwise. More...

virtual int unbind (const char *name)
 Unbind (remove) the name from the map. Don't return the pointer to the caller. More...

virtual int unbind (const char *name, void *&pointer)
 Break any association of name. Returns the value of pointer in case the caller needs to deallocate memory. 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 <len> bytes of 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)
 Change the protection of the pages of the mapped region to <prot> starting at <addr> up to <len> bytes. More...

virtual void dump (void) const
 Dump the state of the object. More...


Protected Methods

 ACE_Static_Allocator_Base (void)
 Don't allow direct instantiations of this class. More...


Protected Attributes

char * buffer_
 Pointer to the buffer. More...

size_t size_
 Size of the buffer. More...

size_t offset_
 Pointer to the current offset in the <buffer_>. More...


Detailed Description

Defines a class that provided a highly optimized memory management scheme for allocating memory statically.

This class manages a fixed-size <POOL_SIZE> of memory. Every time <malloc>/<calloc> is called, it simply moves an internal index forward and returns a pointer to the requested chunk. All memory is allocated statically (typically via the <ACE_Static_Allocator> template) and <free> is a no-op. This behavior is useful for use-cases where all the memory allocation needs are known in advance and no deletions ever occur.

Definition at line 100 of file Malloc_Allocator.h.


Constructor & Destructor Documentation

ACE_INLINE ACE_Static_Allocator_Base::ACE_Static_Allocator_Base char *    buffer,
size_t    size
 

Definition at line 233 of file Malloc_Allocator.i.

00235   : buffer_ (buffer),
00236     size_ (size),
00237     offset_ (0)
00238 {
00239 }

ACE_Static_Allocator_Base::ACE_Static_Allocator_Base void    [protected]
 

Don't allow direct instantiations of this class.


Member Function Documentation

ACE_INLINE int ACE_Static_Allocator_Base::bind const char *    name,
void *    pointer,
int    duplicates = 0
[virtual]
 

Associate <name> with <pointer>. If <duplicates> == 0 then do not allow duplicate <name>/<pointer> associations, else if <duplicates> != 0 then allow duplicate <name>/<pointer> assocations. Returns 0 if successfully binds (1) a previously unbound <name> or (2) <duplicates> != 0, returns 1 if trying to bind a previously bound <name> and <duplicates> == 0, else returns -1 if a resource failure occurs.

Implements ACE_Allocator.

Definition at line 166 of file Malloc_Allocator.i.

00167 {
00168   return -1;
00169 }

ACE_INLINE void * ACE_Static_Allocator_Base::calloc size_t    n_elem,
size_t    elem_size,
char    initial_value = '\0'
[virtual]
 

Allocate <n_elem> each of size <elem_size>, giving them <initial_value>.

Implements ACE_Allocator.

Definition at line 144 of file Malloc_Allocator.i.

References calloc.

00147 {
00148   return this->calloc (n_elem * elem_size, initial_value);
00149 }

ACE_INLINE void * ACE_Static_Allocator_Base::calloc size_t    nbytes,
char    initial_value = '\0'
[virtual]
 

Allocate <nbytes>, giving them <initial_value>.

Implements ACE_Allocator.

Definition at line 134 of file Malloc_Allocator.i.

References malloc, and ACE_OS_String::memset.

Referenced by calloc.

00136 {
00137   void *ptr = this->malloc (nbytes);
00138 
00139   ACE_OS::memset (ptr, initial_value, nbytes);
00140   return (void *) ptr;
00141 }

void ACE_Static_Allocator_Base::dump void    const [virtual]
 

Dump the state of the object.

Implements ACE_Allocator.

Definition at line 118 of file Malloc_Allocator.cpp.

References ACE_BEGIN_DUMP, ACE_DEBUG, ACE_END_DUMP, ACE_HEX_DUMP, ACE_LIB_TEXT, ACE_TRACE, and LM_DEBUG.

00119 {
00120   ACE_TRACE ("ACE_Static_Allocator_Base::dump");
00121 
00122   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00123   ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\noffset_ = %d"), this->offset_));
00124   ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\nsize_ = %d\n"), this->size_));
00125   ACE_HEX_DUMP ((LM_DEBUG, this->buffer_, this->size_));
00126   ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\n")));
00127 
00128   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00129 }

ACE_INLINE int ACE_Static_Allocator_Base::find const char *    name [virtual]
 

Returns 0 if the name is in the mapping. -1, otherwise.

Implements ACE_Allocator.

Definition at line 184 of file Malloc_Allocator.i.

00185 {
00186   return -1;
00187 }

ACE_INLINE int ACE_Static_Allocator_Base::find const char *    name,
void *&    pointer
[virtual]
 

Locate <name> and pass out parameter via pointer. If found, return 0, returns -1 if failure occurs.

Implements ACE_Allocator.

Definition at line 178 of file Malloc_Allocator.i.

00179 {
00180   return -1;
00181 }

ACE_INLINE void ACE_Static_Allocator_Base::free void *    ptr [virtual]
 

Free <ptr> (must have been allocated by <ACE_Allocator::malloc>).

Implements ACE_Allocator.

Definition at line 152 of file Malloc_Allocator.i.

References ACE_ASSERT, and buffer_.

00153 {
00154   // Check to see if ptr is within our pool?!
00155   ACE_UNUSED_ARG (ptr);
00156   ACE_ASSERT (ptr >= this->buffer_ && ptr < this->buffer_ + this->size_);
00157 }

ACE_INLINE void * ACE_Static_Allocator_Base::malloc size_t    nbytes [virtual]
 

Allocate <nbytes>, but don't give them any initial value.

Implements ACE_Allocator.

Definition at line 116 of file Malloc_Allocator.i.

References buffer_, offset_, and size_.

Referenced by calloc.

00117 {
00118   if (this->offset_ + nbytes > this->size_)
00119     {
00120       errno = ENOMEM;
00121       return 0;
00122     }
00123   else
00124     {
00125       // Record the current offset, increment the offset by the number
00126       // of bytes requested, and return the original offset.
00127       char *ptr = &this->buffer_[this->offset_];
00128       this->offset_ += nbytes;
00129       return (void *) ptr;
00130     }
00131 }

ACE_INLINE int ACE_Static_Allocator_Base::protect void *    addr,
size_t    len,
int    prot = PROT_RDWR
[virtual]
 

Change the protection of the pages of the mapped region to <prot> starting at <addr> up to <len> bytes.

Implements ACE_Allocator.

Definition at line 220 of file Malloc_Allocator.i.

00221 {
00222   return -1;
00223 }

ACE_INLINE int ACE_Static_Allocator_Base::protect ssize_t    len = -1,
int    prot = PROT_RDWR
[virtual]
 

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.

Implements ACE_Allocator.

Definition at line 214 of file Malloc_Allocator.i.

References ssize_t.

00215 {
00216   return -1;
00217 }

ACE_INLINE int ACE_Static_Allocator_Base::remove void    [virtual]
 

Remove any resources associated with this memory manager.

Implements ACE_Allocator.

Definition at line 160 of file Malloc_Allocator.i.

00161 {
00162   return -1;
00163 }

ACE_INLINE int ACE_Static_Allocator_Base::sync void *    addr,
size_t    len,
int    flags = MS_SYNC
[virtual]
 

Sync <len> bytes of the memory region to the backing store starting at <addr_>.

Implements ACE_Allocator.

Definition at line 208 of file Malloc_Allocator.i.

00209 {
00210   return -1;
00211 }

ACE_INLINE int ACE_Static_Allocator_Base::sync ssize_t    len = -1,
int    flags = MS_SYNC
[virtual]
 

Sync <len> bytes of the memory region to the backing store starting at <this->base_addr_>. If <len> == -1 then sync the whole region.

Implements ACE_Allocator.

Definition at line 202 of file Malloc_Allocator.i.

References ssize_t.

00203 {
00204   return -1;
00205 }

ACE_INLINE int ACE_Static_Allocator_Base::trybind const char *    name,
void *&    pointer
[virtual]
 

Associate <name> with <pointer>. Does not allow duplicate <name>/<pointer> associations. Returns 0 if successfully binds (1) a previously unbound <name>, 1 if trying to bind a previously bound <name>, or returns -1 if a resource failure occurs. When this call returns <pointer>'s value will always reference the void * that <name> is associated with. Thus, if the caller needs to use <pointer> (e.g., to free it) a copy must be maintained by the caller.

Implements ACE_Allocator.

Definition at line 172 of file Malloc_Allocator.i.

00173 {
00174   return -1;
00175 }

ACE_INLINE int ACE_Static_Allocator_Base::unbind const char *    name,
void *&    pointer
[virtual]
 

Break any association of name. Returns the value of pointer in case the caller needs to deallocate memory.

Implements ACE_Allocator.

Definition at line 196 of file Malloc_Allocator.i.

00197 {
00198   return -1;
00199 }

ACE_INLINE int ACE_Static_Allocator_Base::unbind const char *    name [virtual]
 

Unbind (remove) the name from the map. Don't return the pointer to the caller.

Implements ACE_Allocator.

Definition at line 190 of file Malloc_Allocator.i.

00191 {
00192   return -1;
00193 }


Member Data Documentation

char* ACE_Static_Allocator_Base::buffer_ [protected]
 

Pointer to the buffer.

Definition at line 129 of file Malloc_Allocator.h.

Referenced by free, and malloc.

size_t ACE_Static_Allocator_Base::offset_ [protected]
 

Pointer to the current offset in the <buffer_>.

Definition at line 135 of file Malloc_Allocator.h.

Referenced by malloc.

size_t ACE_Static_Allocator_Base::size_ [protected]
 

Size of the buffer.

Definition at line 132 of file Malloc_Allocator.h.

Referenced by malloc.


The documentation for this class was generated from the following files:
Generated on Mon Jun 16 12:56:34 2003 for ACE by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002