u_memory.h File Reference

Include dependency graph for u_memory.h:

Go to the source code of this file.

Defines

#define ENOMEM   12
 Memory functions.
#define MALLOC(SIZE)   malloc( SIZE )
#define CALLOC(COUNT, SIZE)   calloc( COUNT, SIZE )
#define FREE(PTR)   free( PTR )
#define REALLOC(OLDPTR, OLDSIZE, NEWSIZE)   realloc( OLDPTR, NEWSIZE )
#define MALLOC_STRUCT(T)   (struct T *) MALLOC(sizeof(struct T))
#define CALLOC_STRUCT(T)   (struct T *) CALLOC(1, sizeof(struct T))
#define Elements(x)   (sizeof(x)/sizeof((x)[0]))
 Number of elements in an array.
#define Offset(TYPE, MEMBER)   ((unsigned)&(((TYPE *)NULL)->MEMBER))
 Offset of a field in a struct, in bytes.

Functions

static void * align_malloc (size_t bytes, uint alignment)
 Return memory on given byte alignment.
static void align_free (void *ptr)
 Free memory returned by align_malloc().
static void * mem_dup (const void *src, uint size)
 Duplicate a block of memory.


Define Documentation

#define CALLOC ( COUNT,
SIZE   )     calloc( COUNT, SIZE )

Definition at line 100 of file u_memory.h.

#define CALLOC_STRUCT (  )     (struct T *) CALLOC(1, sizeof(struct T))

Definition at line 151 of file u_memory.h.

#define Elements (  )     (sizeof(x)/sizeof((x)[0]))

Number of elements in an array.

Definition at line 215 of file u_memory.h.

#define ENOMEM   12

Memory functions.

Definition at line 50 of file u_memory.h.

#define FREE ( PTR   )     free( PTR )

Definition at line 101 of file u_memory.h.

#define MALLOC ( SIZE   )     malloc( SIZE )

Definition at line 99 of file u_memory.h.

#define MALLOC_STRUCT (  )     (struct T *) MALLOC(sizeof(struct T))

Definition at line 149 of file u_memory.h.

#define Offset ( TYPE,
MEMBER   )     ((unsigned)&(((TYPE *)NULL)->MEMBER))

Offset of a field in a struct, in bytes.

Definition at line 222 of file u_memory.h.

#define REALLOC ( OLDPTR,
OLDSIZE,
NEWSIZE   )     realloc( OLDPTR, NEWSIZE )

Definition at line 102 of file u_memory.h.


Function Documentation

static void align_free ( void *  ptr  )  [static]

Free memory returned by align_malloc().

Definition at line 186 of file u_memory.h.

References FREE.

00188 {
00189 #if defined(HAVE_POSIX_MEMALIGN)
00190    FREE(ptr);
00191 #else
00192    void **cubbyHole = (void **) ((char *) ptr - sizeof(void *));
00193    void *realAddr = *cubbyHole;
00194    FREE(realAddr);
00195 #endif /* defined(HAVE_POSIX_MEMALIGN) */

static void* align_malloc ( size_t  bytes,
uint  alignment 
) [static]

Return memory on given byte alignment.

Definition at line 158 of file u_memory.h.

References align_pointer(), assert, and MALLOC.

00160 {
00161 #if defined(HAVE_POSIX_MEMALIGN)
00162    void *mem;
00163    alignment = (alignment + (uint)sizeof(void*) - 1) & ~((uint)sizeof(void*) - 1);
00164    if(posix_memalign(& mem, alignment, bytes) != 0)
00165       return NULL;
00166    return mem;
00167 #else
00168    char *ptr, *buf;
00169 
00170    assert( alignment > 0 );
00171 
00172    ptr = (char *) MALLOC(bytes + alignment + sizeof(void *));
00173    if (!ptr)
00174       return NULL;
00175 
00176    buf = (char *) align_pointer( ptr + sizeof(void *), alignment );
00177    *(char **)(buf - sizeof(void *)) = ptr;
00178 
00179    return buf;
00180 #endif /* defined(HAVE_POSIX_MEMALIGN) */

static void* mem_dup ( const void *  src,
uint  size 
) [static]

Duplicate a block of memory.

Definition at line 202 of file u_memory.h.

References MALLOC.

00204 {
00205    void *dup = MALLOC(size);
00206    if (dup)
00207       memcpy(dup, src, size);
00208    return dup;


Generated on Tue Sep 29 06:25:28 2009 for Gallium3D by  doxygen 1.5.4