Memory Allocation Macros and Functions
Memory allocation functions and macros handle memory management for the XBinder C run-time. More...
Defines | |
#define | OSRTALLOCTYPE(pctxt, type) (type*) rtxMemHeapAlloc (&(pctxt)->pMemHeap, sizeof(type)) |
This macro allocates a single element of the given type. | |
#define | OSRTALLOCTYPEZ(pctxt, type) (type*) rtxMemHeapAllocZ (&(pctxt)->pMemHeap, sizeof(type)) |
This macro allocates and zeros a single element of the given type. | |
#define | OSRTREALLOCARRAY(pctxt, pseqof, type) |
Reallocate an array. | |
#define | rtxMemAlloc(pctxt, nbytes) rtxMemHeapAlloc(&(pctxt)->pMemHeap,nbytes) |
Allocate memory. | |
#define | rtxMemSysAlloc(pctxt, nbytes) rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,nbytes) |
This macro makes a direct call to the configured system memory allocation function. | |
#define | rtxMemAllocZ(pctxt, nbytes) rtxMemHeapAllocZ(&(pctxt)->pMemHeap,nbytes) |
Allocate and zero memory. | |
#define | rtxMemSysAllocZ(pctxt, nbytes) rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,nbytes) |
Allocate and zero memory. | |
#define | rtxMemRealloc(pctxt, mem_p, nbytes) rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, nbytes) |
Reallocate memory. | |
#define | rtxMemSysRealloc(pctxt, mem_p, nbytes) rtxMemHeapSysRealloc(&(pctxt)->pMemHeap,(void*)mem_p,nbytes) |
This macro makes a direct call to the configured system memory reallocation function to do the reallocation. | |
#define | rtxMemFreePtr(pctxt, mem_p) rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer. | |
#define | rtxMemSysFreePtr(pctxt, mem_p) rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
This macro makes a direct call to the configured system memory free function. | |
#define | rtxMemAllocType(pctxt, ctype) (ctype*)rtxMemHeapAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type. | |
#define | rtxMemSysAllocType(pctxt, ctype) (ctype*)rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type. | |
#define | rtxMemAllocTypeZ(pctxt, ctype) (ctype*)rtxMemHeapAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type and zero memory. | |
#define | rtxMemSysAllocTypeZ(pctxt, ctype) (ctype*)rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type and zero memory. | |
#define | rtxMemFreeType(pctxt, mem_p) rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer. | |
#define | rtxMemSysFreeType(pctxt, mem_p) rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer. | |
#define | rtxMemAllocArray(pctxt, n, type) (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), 0) |
Allocate a dynamic array. | |
#define | rtxMemSysAllocArray(pctxt, n, type) (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_SYSALLOC) |
Allocate a dynamic array. | |
#define | rtxMemAllocArrayZ(pctxt, n, type) (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_ZEROARRAY) |
Allocate a dynamic array and zero memory. | |
#define | rtxMemFreeArray(pctxt, mem_p) rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer. | |
#define | rtxMemSysFreeArray(pctxt, mem_p) rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer. | |
#define | rtxMemReallocArray(pctxt, mem_p, n, type) (type*)rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, sizeof(type)*n) |
Reallocate memory. | |
#define | rtxMemNewAutoPtr(pctxt, nbytes) rtxMemHeapAlloc(&(pctxt)->pMemHeap, nbytes) |
This function allocates a new block of memory and creates an auto-pointer with reference count set to one. | |
#define | rtxMemAutoPtrRef(pctxt, ptr) rtxMemHeapAutoPtrRef(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function increments the auto-pointer reference count. | |
#define | rtxMemAutoPtrUnref(pctxt, ptr) rtxMemHeapAutoPtrUnref(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function decrements the auto-pointer reference count. | |
#define | rtxMemAutoPtrGetRefCount(pctxt, ptr) rtxMemHeapAutoPtrGetRefCount(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function returns the reference count of the given pointer. | |
#define | rtxMemCheckPtr(pctxt, mem_p) rtxMemHeapCheckPtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Check memory pointer. | |
#define | rtxMemCheck(pctxt) rtxMemHeapCheck(&(pctxt)->pMemHeap, __FILE__, __LINE__) |
Check memory heap. | |
#define | rtxMemPrint(pctxt) rtxMemHeapPrint(&(pctxt)->pMemHeap) |
Print memory heap structure to stderr. | |
#define | rtxMemSetProperty(pctxt, propId, pProp) rtxMemHeapSetProperty (&(pctxt)->pMemHeap, propId, pProp) |
Set memory heap property. | |
Functions | |
EXTERNRT void | rtxMemSetAllocFuncs (OSMallocFunc malloc_func, OSReallocFunc realloc_func, OSFreeFunc free_func) |
This function sets the pointers to standard allocation functions. | |
EXTERNRT OSUINT32 | rtxMemHeapGetDefBlkSize (OSCTXT *pctxt) |
This function returns the actual granularity of memory blocks in the context. | |
EXTERNRT void | rtxMemSetDefBlkSize (OSUINT32 blkSize) |
This function sets the minimum size and the granularity of memory blocks for newly created memory heaps. | |
EXTERNRT OSUINT32 | rtxMemGetDefBlkSize (OSVOIDARG) |
This function returns the actual granularity of memory blocks. | |
EXTERNRT OSBOOL | rtxMemHeapIsEmpty (OSCTXT *pctxt) |
This function determines if the memory heap defined in the give context is empty (i.e. | |
EXTERNRT OSBOOL | rtxMemIsZero (const void *pmem, size_t memsiz) |
This helper function determines if an arbitrarily sized block of memory is set to zero. | |
EXTERNRT void | rtxMemFree (OSCTXT *pctxt) |
Free memory associated with a context. | |
EXTERNRT void | rtxMemReset (OSCTXT *pctxt) |
Reset memory associated with a context. |
Detailed Description
Memory allocation functions and macros handle memory management for the XBinder C run-time.
Special algorithms are used for allocation and deallocation of memory to improve the run-time performance.
Define Documentation
#define OSRTALLOCTYPE | ( | pctxt, | |||
type | ) | (type*) rtxMemHeapAlloc (&(pctxt)->pMemHeap, sizeof(type)) |
This macro allocates a single element of the given type.
- Parameters:
-
pctxt - Pointer to a context block type - Data type of record to allocate
Definition at line 73 of file rtxMemory.h.
#define OSRTALLOCTYPEZ | ( | pctxt, | |||
type | ) | (type*) rtxMemHeapAllocZ (&(pctxt)->pMemHeap, sizeof(type)) |
This macro allocates and zeros a single element of the given type.
- Parameters:
-
pctxt - Pointer to a context block type - Data type of record to allocate
Definition at line 82 of file rtxMemory.h.
#define OSRTREALLOCARRAY | ( | pctxt, | |||
pseqof, | |||||
type | ) |
do {\ if (sizeof(type)*(pseqof)->n < (pseqof)->n) return RTERR_NOMEM; \ if (((pseqof)->elem = (type*) rtxMemHeapRealloc \ (&(pctxt)->pMemHeap, (pseqof)->elem, sizeof(type)*(pseqof)->n)) == 0) \ return RTERR_NOMEM; \ } while (0)
Reallocate an array.
This macro reallocates an array (either expands or contracts) to hold the given number of elements. The number of elements is specified in the n member variable of the pseqof argument.
- Parameters:
-
pctxt - Pointer to a context block pseqof - Pointer to a generated SEQUENCE OF array structure. The n member variable must be set to the number of records to allocate. type - Data type of an array record
Definition at line 96 of file rtxMemory.h.
#define rtxMemAlloc | ( | pctxt, | |||
nbytes | ) | rtxMemHeapAlloc(&(pctxt)->pMemHeap,nbytes) |
Allocate memory.
This macro allocates the given number of bytes. It is similar to the C malloc
run-time function.
- Parameters:
-
pctxt - Pointer to a context block nbytes - Number of bytes of memory to allocate
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 265 of file rtxMemory.h.
#define rtxMemAllocArray | ( | pctxt, | |||
n, | |||||
type | ) | (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), 0) |
Allocate a dynamic array.
This macro allocates a dynamic array of records of the given type. The pointer to the allocated array is returned to the caller.
- Parameters:
-
pctxt - Pointer to a context block n - Number of records to allocate type - Data type of an array record
Definition at line 492 of file rtxMemory.h.
#define rtxMemAllocArrayZ | ( | pctxt, | |||
n, | |||||
type | ) | (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_ZEROARRAY) |
Allocate a dynamic array and zero memory.
This macro allocates a dynamic array of records of the given type and writes zeros over the allocated memory. The pointer to the allocated array is returned to the caller.
- Parameters:
-
pctxt - Pointer to a context block n - Number of records to allocate type - Data type of an array record
Definition at line 523 of file rtxMemory.h.
#define rtxMemAllocType | ( | pctxt, | |||
ctype | ) | (ctype*)rtxMemHeapAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type.
This macro allocates memory to hold a variable of the given type.
- Parameters:
-
pctxt - Pointer to a context block ctype - Name of C typedef
- Returns:
- - Pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 408 of file rtxMemory.h.
#define rtxMemAllocTypeZ | ( | pctxt, | |||
ctype | ) | (ctype*)rtxMemHeapAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type and zero memory.
This macro allocates memory to hold a variable of the given type and initializes the allocated memory to zero.
- Parameters:
-
pctxt - Pointer to a context block ctype - Name of C typedef
- Returns:
- - Pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 436 of file rtxMemory.h.
#define rtxMemAllocZ | ( | pctxt, | |||
nbytes | ) | rtxMemHeapAllocZ(&(pctxt)->pMemHeap,nbytes) |
Allocate and zero memory.
This macro allocates the given number of bytes and then initializes the memory block to zero.
- Parameters:
-
pctxt - Pointer to a context block nbytes - Number of bytes of memory to allocate
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 290 of file rtxMemory.h.
#define rtxMemAutoPtrGetRefCount | ( | pctxt, | |||
ptr | ) | rtxMemHeapAutoPtrGetRefCount(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function returns the reference count of the given pointer.
goes to zero, the memory is freed.
- Parameters:
-
pctxt Pointer to a context structure. ptr Pointer on which reference count is to be fetched.
- Returns:
- Pointer reference count.
Definition at line 619 of file rtxMemory.h.
#define rtxMemAutoPtrRef | ( | pctxt, | |||
ptr | ) | rtxMemHeapAutoPtrRef(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function increments the auto-pointer reference count.
- Parameters:
-
pctxt Pointer to a context structure. ptr Pointer on which reference count is to be incremented.
- Returns:
- Referenced pointer value (ptr argument) or NULL if reference count could not be incremented.
Definition at line 595 of file rtxMemory.h.
#define rtxMemAutoPtrUnref | ( | pctxt, | |||
ptr | ) | rtxMemHeapAutoPtrUnref(&(pctxt)->pMemHeap, (void*)(ptr)) |
This function decrements the auto-pointer reference count.
If the count goes to zero, the memory is freed.
- Parameters:
-
pctxt Pointer to a context structure. ptr Pointer on which reference count is to be decremented.
- Returns:
- Positive reference count or a negative error code. If zero, memory held by pointer will have been freed.
Definition at line 608 of file rtxMemory.h.
#define rtxMemCheck | ( | pctxt | ) | rtxMemHeapCheck(&(pctxt)->pMemHeap, __FILE__, __LINE__) |
Check memory heap.
- Parameters:
-
pctxt - Pointer to a context block
Definition at line 638 of file rtxMemory.h.
#define rtxMemCheckPtr | ( | pctxt, | |||
mem_p | ) | rtxMemHeapCheckPtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Check memory pointer.
This macro check pointer on presence in heap.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block.
- Returns:
- 1 - pointer refer to memory block in heap; 0 - poiter refer not memory heap block.
Definition at line 630 of file rtxMemory.h.
#define rtxMemFreeArray | ( | pctxt, | |||
mem_p | ) | rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer.
This macro frees memory at the given pointer. The memory must have been allocated using the rtxMemAlloc (or similar) macros or the rtxMem memory allocation macros. This macro is similar to the C free
function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemAlloc or rtxMemAlloc macro or the rtxMemHeapAlloc function.
Definition at line 537 of file rtxMemory.h.
#define rtxMemFreePtr | ( | pctxt, | |||
mem_p | ) | rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer.
This macro frees memory at the given pointer. The memory must have been allocated using the rtxMemAlloc (or similar) macros or the rtxMem memory allocation macros. This macro is similar to the C free
function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemAlloc macro or the rtxMemHeapAlloc function.
Definition at line 357 of file rtxMemory.h.
#define rtxMemFreeType | ( | pctxt, | |||
mem_p | ) | rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer.
This macro frees memory at the given pointer. The memory must have been allocated using the rtxMemAlloc (or similar) macros or the rtxMem memory allocation macros. This macro is similar to the C free
function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemAlloc or rtxMemAlloc macro or the rtxMemHeapAlloc function.
Definition at line 466 of file rtxMemory.h.
#define rtxMemNewAutoPtr | ( | pctxt, | |||
nbytes | ) | rtxMemHeapAlloc(&(pctxt)->pMemHeap, nbytes) |
This function allocates a new block of memory and creates an auto-pointer with reference count set to one.
The rtxMemAutoPtrRef
and rtxMemAutoPtrUnref
functions can be used to increment and decrement the reference count. When the count goes to zero, the memory held by the pointer is freed.
- Parameters:
-
pctxt Pointer to a context structure. nbytes Number of bytes to allocate.
- Returns:
- Pointer to allocated memory or NULL if not enough memory is available.
Definition at line 584 of file rtxMemory.h.
#define rtxMemPrint | ( | pctxt | ) | rtxMemHeapPrint(&(pctxt)->pMemHeap) |
Print memory heap structure to stderr.
- Parameters:
-
pctxt - Pointer to a context block
Definition at line 646 of file rtxMemory.h.
#define rtxMemRealloc | ( | pctxt, | |||
mem_p, | |||||
nbytes | ) | rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, nbytes) |
Reallocate memory.
This macro reallocates a memory block (either expands or contracts) to the given number of bytes. It is similar to the C realloc
run-time function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to reallocate. This must have been allocated using the rtxMemAlloc macro or the rtxMemHeapAlloc function. nbytes - Number of bytes of memory to which the block is to be resized.
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request. This may be the same as the mem_p pointer that was passed in if the block did not need to be relocated.
Definition at line 324 of file rtxMemory.h.
#define rtxMemReallocArray | ( | pctxt, | |||
mem_p, | |||||
n, | |||||
type | ) | (type*)rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, sizeof(type)*n) |
Reallocate memory.
This macro reallocates a memory block (either expands or contracts) to the given number of bytes. It is similar to the C realloc
run-time function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to reallocate. This must have been allocated using the rtxMemAlloc macro or the rtxMemHeapAlloc function. n - Number of items of the given type to be allocated. type - Array element data type (for example, int).
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request. This may be the same as the pmem pointer that was passed in if the block did not need to be relocated.
Definition at line 568 of file rtxMemory.h.
#define rtxMemSetProperty | ( | pctxt, | |||
propId, | |||||
pProp | ) | rtxMemHeapSetProperty (&(pctxt)->pMemHeap, propId, pProp) |
Set memory heap property.
- Parameters:
-
pctxt - Pointer to a context block propId - Property Id. pProp - Pointer to property value.
Definition at line 656 of file rtxMemory.h.
#define rtxMemSysAlloc | ( | pctxt, | |||
nbytes | ) | rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,nbytes) |
This macro makes a direct call to the configured system memory allocation function.
By default, this is the C malloc function, but it is possible to configure to use a custom allocation function.
- Parameters:
-
pctxt - Pointer to a context block nbytes - Number of bytes of memory to allocate
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 278 of file rtxMemory.h.
#define rtxMemSysAllocArray | ( | pctxt, | |||
n, | |||||
type | ) | (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_SYSALLOC) |
Allocate a dynamic array.
This macro allocates a dynamic array of records of the given type. The pointer to the allocated array is returned to the caller.
This macro makes a direct call to the configured system memory allocation function. By default, this is the C malloc function, but it is possible to configure to use a custom allocation function.
- Parameters:
-
pctxt - Pointer to a context block n - Number of records to allocate type - Data type of an array record
Definition at line 511 of file rtxMemory.h.
#define rtxMemSysAllocType | ( | pctxt, | |||
ctype | ) | (ctype*)rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type.
This macro allocates memory to hold a variable of the given type.
This macro makes a direct call to the configured system memory allocation function. By default, this is the C malloc function, but it is possible to configure to use a custom allocation function.
- Parameters:
-
pctxt - Pointer to a context block ctype - Name of C typedef
- Returns:
- - Pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 424 of file rtxMemory.h.
#define rtxMemSysAllocTypeZ | ( | pctxt, | |||
ctype | ) | (ctype*)rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) |
Allocate type and zero memory.
This macro allocates memory to hold a variable of the given type and initializes the allocated memory to zero.
This macro makes a direct call to the configured system memory allocation function. By default, this is the C malloc function, but it is possible to configure to use a custom allocation function.
- Parameters:
-
pctxt - Pointer to a context block ctype - Name of C typedef
- Returns:
- - Pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 452 of file rtxMemory.h.
#define rtxMemSysAllocZ | ( | pctxt, | |||
nbytes | ) | rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,nbytes) |
Allocate and zero memory.
This macro allocates the given number of bytes and then initializes the memory block to zero.
This macro makes a direct call to the configured system memory allocation function. By default, this is the C malloc function, but it is possible to configure to use a custom allocation function.
- Parameters:
-
pctxt - Pointer to a context block nbytes - Number of bytes of memory to allocate
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request.
Definition at line 306 of file rtxMemory.h.
#define rtxMemSysFreeArray | ( | pctxt, | |||
mem_p | ) | rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer.
This macro frees memory at the given pointer. The memory must have been allocated using the rtxMemSysAlloc (or similar) macros or the rtxMemSys memory allocation macros. This macro is similar to the C free
function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemSysAlloc or rtxMemSysAlloc macro or the rtxMemSysHeapAlloc function.
Definition at line 551 of file rtxMemory.h.
#define rtxMemSysFreePtr | ( | pctxt, | |||
mem_p | ) | rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
This macro makes a direct call to the configured system memory free function.
By default, this is the C free function, but it is possible to configure to use a custom free function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemSysAlloc macro or the rtxMemHeapSysAlloc function.
Definition at line 370 of file rtxMemory.h.
#define rtxMemSysFreeType | ( | pctxt, | |||
mem_p | ) | rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) |
Free memory pointer.
This macro frees memory at the given pointer. The memory must have been allocated using the rtxMemSysAlloc (or similar) macros or the rtxMemSys memory allocation macros. This macro is similar to the C free
function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to free. This must have been allocated using the rtxMemSysAlloc or rtxMemSysAlloc macro or the rtxMemSysHeapAlloc function.
Definition at line 480 of file rtxMemory.h.
#define rtxMemSysRealloc | ( | pctxt, | |||
mem_p, | |||||
nbytes | ) | rtxMemHeapSysRealloc(&(pctxt)->pMemHeap,(void*)mem_p,nbytes) |
This macro makes a direct call to the configured system memory reallocation function to do the reallocation.
. By default, this is the C realloc function, but it is possible to configure to use a custom reallocation function.
- Parameters:
-
pctxt - Pointer to a context block mem_p - Pointer to memory block to reallocate. This must have been allocated using the rtxMemSysAlloc macro or the rtxMemHeapSysAlloc function. nbytes - Number of bytes of memory to which the block is to be resized.
- Returns:
- - Void pointer to allocated memory or NULL if insufficient memory was available to fulfill the request. This may be the same as the mem_p pointer that was passed in if the block did not need to be relocated.
Definition at line 343 of file rtxMemory.h.
Function Documentation
EXTERNRT void rtxMemFree | ( | OSCTXT * | pctxt | ) |
Free memory associated with a context.
This macro frees all memory held within a context. This is all memory allocated using the rtxMemAlloc (and similar macros) and the rtxMem memory allocation functions using the given context variable.
- Parameters:
-
pctxt - Pointer to a context block
EXTERNRT OSUINT32 rtxMemGetDefBlkSize | ( | OSVOIDARG | ) |
This function returns the actual granularity of memory blocks.
- Returns:
- The currently used minimum size and the granularity of memory blocks.
EXTERNRT OSUINT32 rtxMemHeapGetDefBlkSize | ( | OSCTXT * | pctxt | ) |
This function returns the actual granularity of memory blocks in the context.
- Parameters:
-
pctxt Pointer to a context block.
EXTERNRT OSBOOL rtxMemHeapIsEmpty | ( | OSCTXT * | pctxt | ) |
This function determines if the memory heap defined in the give context is empty (i.e.
contains no outstanding memory allocations).
- Parameters:
-
pctxt Pointer to a context block.
- Returns:
- Boolean true value if heap is empty.
EXTERNRT OSBOOL rtxMemIsZero | ( | const void * | pmem, | |
size_t | memsiz | |||
) |
This helper function determines if an arbitrarily sized block of memory is set to zero.
- Parameters:
-
pmem Pointer to memory block to check memsiz Size of the memory block
- Returns:
- Boolean result: true if memory is all zero
EXTERNRT void rtxMemReset | ( | OSCTXT * | pctxt | ) |
Reset memory associated with a context.
This macro resets all memory held within a context. This is all memory allocated using the rtxMemAlloc (and similar macros) and the rtxMem memory allocation functions using the given context variable.
The difference between this and the OSMEMFREE macro is that the memory blocks held within the context are not actually freed. Internal pointers are reset so the existing blocks can be reused. This can provide a performace improvement for repetitive tasks such as decoding messages in a loop.
- Parameters:
-
pctxt - Pointer to a context block
EXTERNRT void rtxMemSetAllocFuncs | ( | OSMallocFunc | malloc_func, | |
OSReallocFunc | realloc_func, | |||
OSFreeFunc | free_func | |||
) |
This function sets the pointers to standard allocation functions.
These functions are used to allocate/reallocate/free memory blocks. By default, standard C functions - 'malloc', 'realloc' and 'free' - are used. But if some platforms do not support these functions (or some other reasons exist) they can be overloaded. The functions being overloaded should have the same prototypes as the standard functions.
- Parameters:
-
malloc_func Pointer to the memory allocation function ('malloc' by default). realloc_func Pointer to the memory reallocation function ('realloc' by default). free_func Pointer to the memory deallocation function ('free' by default).
EXTERNRT void rtxMemSetDefBlkSize | ( | OSUINT32 | blkSize | ) |
This function sets the minimum size and the granularity of memory blocks for newly created memory heaps.
- Parameters:
-
blkSize The minimum size and the granularity of memory blocks.