dkmem.h File Reference

Memory allocation functions. More...

#include <dk.h>
#include <string.h>

Go to the source code of this file.

Defines

#define DK_MEMRES(ptr, sz)   memset(((void *)(ptr)),0,((size_t)(sz)))
 Reset sz bytes in buffer ptr.
#define DK_MEMCPY(d, s, n)   memcpy(((void *)(d)),((void *)(s)),((size_t)(n)))
 Copy n bytes from buffer s to buffer d.
#define DK_MEMCMP(a, b, n)   memcmp(((void *)(a)),((void *)(b)),((size_t)(n)))
 Compare n bytes in buffers a and b, return 0 for equal buffers.
#define dk_new(t, s)   (t *)dkmem_alloc_tracked(sizeof(t),((size_t)s))
 Allocate memory, s bytes of type t, return pointer on success.
#define dk_delete(p)   dkmem_free((void *)(p))
 Release memory, buffer p.

Functions

void dkmem_res (void *ptr, size_t n)
 Reset memory.
void dkmem_cpy (void *d, void *s, size_t n)
 Copy memory.
int dkmem_cmp (void *s1, void *s2, size_t n)
 Compare memory.
void * dkmem_alloc (size_t elsize, size_t nelem)
 Allocate memory.
void * dkmem_alloc_tracked (size_t elsize, size_t nelem)
 Allocate memory, keep track of allocated size.
void dkmem_free (void *ptr)
 Release memory.
unsigned long dkmem_get_track (int usehb)
 Get amount of memory allocated.


Detailed Description

Memory allocation functions.

This module provides macros and functions for portable memory allocation.

Use the dk_new() and dk_delete() macros to allocate and release memory, not the dkmem_alloc(), dkmem_alloc_tracked() and dkmem_free() functions.

Use the DK_MEMRES(), DK_MEMCPY() and DK_MEMCMP() macros to reset, copy and compare memory buffers, not the dkmem_res(), dkmem_cpy() and dkmem_cmp() functions. The macros invoke the functions provided by the system. I.e. DM_MEMRES() is mapped to either memset() or bzero() or -- if these functions are not available -- dkmem_res(). Typically the functions in the C runtime library are implemented more efficiently than the fallback functions provided by the dkmem module.

The only function in the dkmem module for direct use is dkmem_get_track().


Define Documentation

#define dk_delete (  )     dkmem_free((void *)(p))

Release memory, buffer p.

#define DK_MEMCMP ( a,
b,
 )     memcmp(((void *)(a)),((void *)(b)),((size_t)(n)))

Compare n bytes in buffers a and b, return 0 for equal buffers.

#define DK_MEMCPY ( d,
s,
 )     memcpy(((void *)(d)),((void *)(s)),((size_t)(n)))

Copy n bytes from buffer s to buffer d.

#define DK_MEMRES ( ptr,
sz   )     memset(((void *)(ptr)),0,((size_t)(sz)))

Reset sz bytes in buffer ptr.

#define dk_new ( t,
 )     (t *)dkmem_alloc_tracked(sizeof(t),((size_t)s))

Allocate memory, s bytes of type t, return pointer on success.

Examples:
stotest.c.


Function Documentation

void* dkmem_alloc ( size_t  elsize,
size_t  nelem 
)

Allocate memory.

Attempt to allocate nelem elements of element size elsize.

Parameters:
elsize Size of one element to allocate.
nelem Number of elements to allocate.
Returns:
  • Valid pointer on success.
  • NULL on errors.

void* dkmem_alloc_tracked ( size_t  elsize,
size_t  nelem 
)

Allocate memory, keep track of allocated size.

Attempt to allocate nelem elements of element size elsize and keep track of the summary size of allocated memory.

Parameters:
elsize Size of one element to allocate.
nelem Number of elements to allocate.
Returns:
  • Valid pointer on success.
  • NULL on errors.

int dkmem_cmp ( void *  s1,
void *  s2,
size_t  n 
)

Compare memory.

Compare n bytes in buffers s1 and s2.

Parameters:
s1 Pointer to one buffer.
s2 Pointer to the other buffer.
n Number of bytes to compare.
Returns:
  • 0 if both buffers are equal,
  • positive value if s1 is "larger" than s2.
  • negative value if s1 is "smaller" than s2.

void dkmem_cpy ( void *  d,
void *  s,
size_t  n 
)

Copy memory.

Copy n bytes from s to d.

Parameters:
d Pointer to destination buffer.
s Pointer to source buffer.
n Number of bytes to copy.

void dkmem_free ( void *  ptr  ) 

Release memory.

Release memory previously allocated by dkmem_alloc() or dkmem_alloc_tracked().

Parameters:
ptr Pointer to memory.
Examples:
stotest.c.

unsigned long dkmem_get_track ( int  usehb  ) 

Get amount of memory allocated.

Get number of bytes already allocated.

Parameters:
usehb Flag to indicate whether the higher or lower 32 bits of the number are requested.
Returns:
The numeric value.

void dkmem_res ( void *  ptr,
size_t  n 
)

Reset memory.

Set all bytes in buffer ptr (n bytes) to 0x00.

Parameters:
ptr Pointer to buffer.
n Number of bytes in buffer.


Generated on Mon Jan 4 15:50:56 2010 for dklibs by  doxygen 1.5.8