R_RTOS
0.1
DistributedRealTimeOperatingSystemfortheARMCortexMArchitecture
|
Functions | |
RetCode | initMEM (void) |
Initialize the memory manager. More... | |
static void | delMemBlck (MemMngrHead *const blckToDelete) |
Delete a block from the list it is contained in. More... | |
static MemMngrHead * | getAdjacentPrevBlck (MemMngrHead *const curBlck) |
Calculate and return the block prior to the given block. More... | |
static MemMngrHead * | getAdjacentNxtBlck (MemMngrHead *const curBlck) |
Calculate and return the block next to the given block. More... | |
static MemMngrHead * | getBuddyBlck (MemMngrHead *const curBlck) |
Calculate and return the buddy block to the given block. More... | |
static void | fitBlckBackIntoFreeLst (MemMngrHead *const curBlck) |
Put the given block back into the free memory blocks list according to its address. More... | |
static uint8_t | mergeMemBlck (MemMngrHead **blckToMerge) |
The given memory block is merged with its buddy block if it is free and not cached. More... | |
static void | reMergeMemBlck (MemMngrHead **blckToMerge) |
The given memory block is merged continuously with its buddy blocks as long as these are neither taken nor cached. More... | |
static void | splitMemBlck (MemMngrHead **const blckToSplit) |
The given memory block is split into two equally sized buddies. More... | |
static void | unMergeUnevenBlcks (MemMngrHead *const blckToUnMerge) |
The given memory block is split into the unequal buddy blocks it consisted of. More... | |
static void | mergeUnevenBlocks (MemMngrHead *const basis, MemMngrHead *const added) |
The two given memory blocks of unequal size are merged into one memory block. More... | |
static void | shrinkCacheFIFO (void) |
Remove the last element out of the cache. More... | |
static void | addBlckToCache (MemMngrHead *const blckToAdd) |
Add the given block to the objCache. More... | |
void * | rMalloc (MemSize desiredSize) |
Allocate a block of memory satisfying the desiredSize property. More... | |
void * | rCalloc (const MemSize desiredSize) |
void * | rRealloc (void *ptrToExistingMem, MemSize desiredSize) |
Allocate a block of memory satisfying the desiredSize property. More... | |
void | rFree (void *pToBeFreed) |
The provided block of memory will be added to the memory block cache. More... | |
void | rFullyFree (MemMngrHead *blckToFullyFree) |
Free a block of memory previously allocated with either rMalloc, rCalloc or rRealloc. More... | |
RetCode | memMngr_CreateMemPool (const MemSize sizeOfElements, const uint8_t elements, MemPoolID *const memPoolID) |
Creates a memory pool with the given MemPoolID. More... | |
RetCode | memMngr_DeleteMemPool (const MemPoolID memPoolID) |
Delete a previously created memory pool linked to the provided MemPoolID. More... | |
RetCode | memMngr_MemPoolMalloc (void **ptrToMem, const MemPoolID memPoolID) |
Allocate an element from the memory pool specified by the provided MemPoolID. More... | |
RetCode | memMngr_MemPoolFree (void *ptrToMem, const MemPoolID memPoolID) |
Free a previously allocated block of memory from a memory pool and put it back into the memory pool. More... | |
Variables | |
static MemMngrHead * | freeMemLst = (MemMngrHead *) NULL |
List of free blocks of memory. More... | |
static MemMngrHead * | objCache = (MemMngrHead *) NULL |
List of free cached blocks of memory. More... | |
static MemMngrHead * | objCacheEnd = (MemMngrHead *) NULL |
End of the objCache List. More... | |
static uint8_t | buddyOffset = (uint8_t) 0x0u |
Memory address offset of buddy blocks. More... | |
static uint8_t | cacheSize = (uint8_t) 0x0u |
Counter for the current size of the objCache. More... | |
< *