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

ACE_Malloc_T Class Template Reference

Define a C++ class that uses parameterized types to provide an extensible mechanism for encapsulating various of dynamic memory management strategies. More...

#include <Malloc_T.h>

Inheritance diagram for ACE_Malloc_T:

Inheritance graph
[legend]
Collaboration diagram for ACE_Malloc_T:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_MEM_POOL MEMORY_POOL
typedef ACE_MEM_POOL_OPTIONS MEMORY_POOL_OPTIONS
typedef ACE_TYPENAME ACE_CB::ACE_Name_Node NAME_NODE
typedef ACE_TYPENAME ACE_CB::ACE_Malloc_Header MALLOC_HEADER

Public Methods

 ACE_Malloc_T (const ACE_TCHAR *pool_name=0)
 ACE_Malloc_T (const ACE_TCHAR *pool_name, const ACE_TCHAR *lock_name, const ACE_MEM_POOL_OPTIONS *options=0)
 ACE_Malloc_T (const ACE_TCHAR *pool_name, const ACE_MEM_POOL_OPTIONS *options, ACE_LOCK *lock)
 ~ACE_Malloc_T (void)
 Destructor. More...

int ref_counter (void)
 Get Reference counter. More...

int release (int close=0)
 Release ref counter. More...

int remove (void)
 Releases resources allocated by this object. More...

void * malloc (size_t nbytes)
 Allocate nbytes, but don't give them any initial value. More...

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

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...

void free (void *ptr)
 Deallocate memory pointed to by ptr, which must have been allocated previously by malloc(). More...

MEMORY_POOLmemory_pool (void)
 Returns a reference to the underlying memory pool. More...

int bind (const char *name, void *pointer, int duplicates=0)
int trybind (const char *name, void *&pointer)
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...

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

int unbind (const char *name)
int unbind (const char *name, void *&pointer)
int sync (ssize_t len=-1, int flags=MS_SYNC)
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...

int protect (ssize_t len=-1, int prot=PROT_RDWR)
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...

ssize_t avail_chunks (size_t size) const
ACE_LOCK & mutex (void)
 Returns a pointer to the lock used to provide mutual exclusion to an ACE_Malloc allocator. More...

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

void * base_addr (void)
 Return cb_ptr value. More...

int bad (void)

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...


Private Methods

int open (void)
 Initialize the Malloc pool. More...

int shared_bind (const char *name, void *pointer)
 Associate name with pointer. Assumes that locks are held by callers. More...

void * shared_find (const char *name)
void * shared_malloc (size_t nbytes)
 Allocate memory. Assumes that locks are held by callers. More...

void shared_free (void *ptr)
 Deallocate memory. Assumes that locks are held by callers. More...


Private Attributes

ACE_CB * cb_ptr_
 Pointer to the control block that is stored in memory controlled by <MEMORY_POOL>. More...

MEMORY_POOL memory_pool_
 Pool of memory used by ACE_Malloc to manage its freestore. More...

ACE_LOCK * lock_
 Lock that ensures mutual exclusion for the memory pool. More...

int delete_lock_
int bad_flag_
 Keep track of failure in constructor. More...


Friends

class ACE_Malloc_LIFO_Iterator_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >
class ACE_Malloc_FIFO_Iterator_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >

Detailed Description

template<ACE_MEM_POOL_1, class ACE_LOCK, class ACE_CB>
class ACE_Malloc_T<, ACE_LOCK, ACE_CB >

Define a C++ class that uses parameterized types to provide an extensible mechanism for encapsulating various of dynamic memory management strategies.

This class can be configured flexibly with different MEMORY_POOL strategies and different types of ACE_LOCK strategies.

Definition at line 407 of file Malloc_T.h.


Member Typedef Documentation

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
typedef ACE_TYPENAME ACE_CB::ACE_Malloc_Header ACE_Malloc_T::MALLOC_HEADER
 

Definition at line 415 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::avail_chunks, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::open, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_free, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_malloc.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
typedef ACE_MEM_POOL ACE_Malloc_T::MEMORY_POOL
 

Definition at line 412 of file Malloc_T.h.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
typedef ACE_MEM_POOL_OPTIONS ACE_Malloc_T::MEMORY_POOL_OPTIONS
 

Definition at line 413 of file Malloc_T.h.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
typedef ACE_TYPENAME ACE_CB::ACE_Name_Node ACE_Malloc_T::NAME_NODE
 

Definition at line 414 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::find, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_bind, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_find, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::trybind, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::unbind.


Constructor & Destructor Documentation

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_Malloc_T<, ACE_LOCK, ACE_CB >::ACE_Malloc_T const ACE_TCHAR   pool_name = 0
 

Initialize ACE_Malloc. This constructor passes pool_name to initialize the memory pool, and uses ACE::basename() to automatically extract out the name used for the underlying lock name (if necessary).

Note that pool_name should be located in a directory with the appropriate visibility and protection so that all processes that need to access it can do so.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_Malloc_T<, ACE_LOCK, ACE_CB >::ACE_Malloc_T const ACE_TCHAR   pool_name,
const ACE_TCHAR   lock_name,
const ACE_MEM_POOL_OPTIONS *    options = 0
 

Initialize ACE_Malloc. This constructor passes pool_name to initialize the memory pool, and uses lock_name to automatically extract out the name used for the underlying lock name (if necessary). In addition, options is passed through to initialize the underlying memory pool.

Note that pool_name should be located in a directory with the appropriate visibility and protection so that all processes that need to access it can do so.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_Malloc_T<, ACE_LOCK, ACE_CB >::ACE_Malloc_T const ACE_TCHAR   pool_name,
const ACE_MEM_POOL_OPTIONS *    options,
ACE_LOCK *    lock
 

Initialize an ACE_Malloc with an external ACE_LOCK. This constructor passes pool_name and options to initialize the memory pool. lock is used as the pool lock, and must be properly set up and ready for use before being passed to this method.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_Malloc_T<, ACE_LOCK, ACE_CB >::~ACE_Malloc_T void   
 

Destructor.


Member Function Documentation

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ssize_t ACE_Malloc_T<, ACE_LOCK, ACE_CB >::avail_chunks size_t    size const
 

Returns a count of the number of available chunks that can hold size byte allocations. Function can be used to determine if you have reached a water mark. This implies a fixed amount of allocated memory.

Parameters:
size  The chunk size of that you would like a count of
Returns:
Function returns the number of chunks of the given size that would fit in the currently allocated memory.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::bad void   
 

Bad flag. This operation should be called immediately after the construction of the Malloc object to query whether the object was constructed successfully. If not, the user should invoke remove and release the object (it is not usable.)

Return values:
0  if all is fine. non-zero if this malloc object is unuable.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::base_addr void   
 

Return cb_ptr value.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::bind const char *    name,
void *    pointer,
int    duplicates = 0
 

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.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::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.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::calloc size_t    nbytes,
char    initial_value = '\0'
 

Allocate nbytes, giving them initial_value.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::calloc.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void ACE_Malloc_T<, ACE_LOCK, ACE_CB >::dump void    const
 

Dump the state of an object.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::find const char *    name
 

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

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::find const char *    name,
void *&    pointer
 

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

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void ACE_Malloc_T<, ACE_LOCK, ACE_CB >::free void *    ptr
 

Deallocate memory pointed to by ptr, which must have been allocated previously by malloc().

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::malloc size_t    nbytes
 

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

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::calloc.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
MEMORY_POOL& ACE_Malloc_T<, ACE_LOCK, ACE_CB >::memory_pool void   
 

Returns a reference to the underlying memory pool.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_LOCK& ACE_Malloc_T<, ACE_LOCK, ACE_CB >::mutex void   
 

Returns a pointer to the lock used to provide mutual exclusion to an ACE_Malloc allocator.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::open void    [private]
 

Initialize the Malloc pool.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::ACE_Malloc_T.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::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.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::protect ssize_t    len = -1,
int    prot = PROT_RDWR
 

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.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::ref_counter void   
 

Get Reference counter.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::release int    close = 0
 

Release ref counter.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::remove void   
 

Releases resources allocated by this object.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::release.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::shared_bind const char *    name,
void *    pointer
[private]
 

Associate name with pointer. Assumes that locks are held by callers.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::bind, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::trybind.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::shared_find const char *    name [private]
 

Try to locate name. If found, return the associated ACE_Name_Node, else returns 0 if can't find the name. Assumes that locks are held by callers. Remember to cast the return value to ACE_CB::ACE_Name_Node*.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::bind, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::find, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::trybind.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void ACE_Malloc_T<, ACE_LOCK, ACE_CB >::shared_free void *    ptr [private]
 

Deallocate memory. Assumes that locks are held by callers.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::free, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::open, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_malloc, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::unbind.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
void* ACE_Malloc_T<, ACE_LOCK, ACE_CB >::shared_malloc size_t    nbytes [private]
 

Allocate memory. Assumes that locks are held by callers.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::malloc.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::sync void *    addr,
size_t    len,
int    flags = MS_SYNC
 

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

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::sync ssize_t    len = -1,
int    flags = MS_SYNC
 

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

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::trybind const char *    name,
void *&    pointer
 

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.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::unbind const char *    name,
void *&    pointer
 

Unbind (remove) one association of name to pointer. Returns the value of pointer in case the caller needs to deallocate memory. If you want to remove all occurrences of name you'll need to call this method multiple times until it fails...

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T<, ACE_LOCK, ACE_CB >::unbind const char *    name
 

Unbind (remove) the name from the map. Don't return the pointer to the caller. If you want to remove all occurrences of name you'll need to call this method multiple times until it fails...

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::unbind.


Friends And Related Function Documentation

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
friend class ACE_Malloc_FIFO_Iterator_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB > [friend]
 

Definition at line 411 of file Malloc_T.h.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
friend class ACE_Malloc_LIFO_Iterator_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB > [friend]
 

Definition at line 410 of file Malloc_T.h.


Member Data Documentation

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_Malloc_T::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Definition at line 592 of file Malloc_T.h.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T::bad_flag_ [private]
 

Keep track of failure in constructor.

Definition at line 642 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::ACE_Malloc_T, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::bad.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_CB* ACE_Malloc_T::cb_ptr_ [private]
 

Pointer to the control block that is stored in memory controlled by <MEMORY_POOL>.

Definition at line 632 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::avail_chunks, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::base_addr, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::dump, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::open, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::ref_counter, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::release, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::remove, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_bind, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_find, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_free, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_malloc, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::unbind.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
int ACE_Malloc_T::delete_lock_ [private]
 

Definition at line 639 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::ACE_Malloc_T, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::remove, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::~ACE_Malloc_T.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
ACE_LOCK* ACE_Malloc_T::lock_ [private]
 

Lock that ensures mutual exclusion for the memory pool.

Definition at line 638 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::mutex, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::remove, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::~ACE_Malloc_T.

template<ACE_MEM_POOL_1 , class ACE_LOCK, class ACE_CB>
MEMORY_POOL ACE_Malloc_T::memory_pool_ [private]
 

Pool of memory used by ACE_Malloc to manage its freestore.

Definition at line 635 of file Malloc_T.h.

Referenced by ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::dump, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::memory_pool, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::open, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::protect, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::release, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::remove, ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::shared_malloc, and ACE_Malloc_T< ACE_MEM_POOL_2, ACE_LOCK, ACE_CB >::sync.


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