ACE  6.1.0
Classes | Defines | Typedefs
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"

Classes

class  ACE_bad_alloc_class

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_bad_alloc   ACE_bad_alloc_class
#define ACE_throw_bad_alloc   return 0

Typedefs

typedef void * ACE_MALLOC_T

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.

Detailed Description

Id:
OS_Memory.h 91688 2010-09-09 11:21:50Z johnnyw
Author:
Doug Schmidt <schmidt@cs.wustl.edu>
Jesper S. M|ller<stophph@diku.dk>
and a cast of thousands...

Define Documentation

#define ACE_bad_alloc   ACE_bad_alloc_class
#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   return 0

Typedef Documentation

typedef void* ACE_MALLOC_T

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:
ptrthe base pointer
alignmentthe required alignment
char* ACE_ptr_align_binary ( char const *  ptr,
uintptr_t  alignment 
) [inline]

Return the next address aligned to a required boundary.

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

Return the next address aligned to a required boundary.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines