OS_Memory.h File Reference

#include "ace/OS_Errno.h"
#include "ace/Basic_Types.h"
#include "ace/os_include/os_stddef.h"
#include "ace/OS_NS_stdlib.h"

Include dependency graph for OS_Memory.h:


Defines

#define ACE_MALLOC_FUNC   ::malloc
#define ACE_CALLOC_FUNC   ::calloc
#define ACE_FREE_FUNC   ::free
#define ACE_REALLOC_FUNC   ::realloc
#define ACE_del_bad_alloc
#define ACE_NEW_RETURN(POINTER, CONSTRUCTOR, RET_VAL)
#define ACE_NEW(POINTER, CONSTRUCTOR)
#define ACE_NEW_NORETURN(POINTER, CONSTRUCTOR)
#define ACE_throw_bad_alloc

Functions

Efficiently compute aligned pointers to powers of 2 boundaries.
uintptr_t ACE_align_binary (uintptr_t ptr, uintptr_t alignment)
 Return the next integer aligned to a required boundary.
char * ACE_ptr_align_binary (char const *ptr, uintptr_t alignment)
 Return the next address aligned to a required boundary.
char * ACE_ptr_align_binary (unsigned char const *ptr, uintptr_t alignment)
 Return the next address aligned to a required boundary.

Variables

ACE_BEGIN_VERSIONED_NAMESPACE_DECL
typedef void * 
ACE_MALLOC_T

Detailed Description

Id
OS_Memory.h 80826 2008-03-04 14:51:23Z wotte

Author:
Doug Schmidt <schmidt@cs.wustl.edu>

Jesper S. M|ller<stophph@diku.dk>

and a cast of thousands...


Define Documentation

#define ACE_CALLOC_FUNC   ::calloc

#define ACE_del_bad_alloc

#define ACE_FREE_FUNC   ::free

#define ACE_MALLOC_FUNC   ::malloc

#define ACE_NEW ( POINTER,
CONSTRUCTOR   ) 

Value:

do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return; } \
   } while (0)

#define ACE_NEW_NORETURN ( POINTER,
CONSTRUCTOR   ) 

Value:

do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; } \
   } while (0)

#define ACE_NEW_RETURN ( POINTER,
CONSTRUCTOR,
RET_VAL   ) 

Value:

do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } \
   } while (0)

#define ACE_REALLOC_FUNC   ::realloc

#define ACE_throw_bad_alloc

Value:

void* gcc_will_complain_if_literal_0_is_returned = 0; \
  return gcc_will_complain_if_literal_0_is_returned


Function Documentation

uintptr_t ACE_align_binary ( uintptr_t  ptr,
uintptr_t  alignment 
) [inline]

Return the next integer aligned to a required boundary.

Efficiently align "value" up to "alignment", knowing that all such boundaries are binary powers and that we're using two's complement arithmetic.

Since the alignment is a power of two its binary representation is:

alignment = 0...010...0

hence

alignment - 1 = 0...001...1 = T1

so the complement is:

~(alignment - 1) = 1...110...0 = T2

Notice that there is a multiple of <alignment> in the range [

,

+ T1], also notice that if

X = (

+ T1 ) & T2

then

<= X <=

+ T1

because the & operator only changes the last bits, and since X is a multiple of <alignment> (its last bits are zero) we have found the multiple we wanted.

Parameters:
ptr the base pointer
alignment the required alignment

char* ACE_ptr_align_binary ( unsigned char const *  ptr,
uintptr_t  alignment 
) [inline]

Return the next address aligned to a required boundary.

char* ACE_ptr_align_binary ( char const *  ptr,
uintptr_t  alignment 
) [inline]

Return the next address aligned to a required boundary.


Variable Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL typedef void* ACE_MALLOC_T


Generated on Wed Apr 23 02:22:27 2008 for ACE by  doxygen 1.5.5