diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-10 22:15:15 +0100 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-10 22:43:56 +0100 |
| commit | 0bff8199e4a800d5ea1bd422dcf06643d6daf008 (patch) | |
| tree | 15108a0073d66afc026c0a2225474c2d61e71b34 /include/08.heap/heap07.c | |
| parent | 97d99fa196d4b732cfd6635dcb8b0a9c9228c88d (diff) | |
include/setup.sh
Diffstat (limited to 'include/08.heap/heap07.c')
| -rw-r--r-- | include/08.heap/heap07.c | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/include/08.heap/heap07.c b/include/08.heap/heap07.c deleted file mode 100644 index 5686cd4..0000000 --- a/include/08.heap/heap07.c +++ /dev/null @@ -1,32 +0,0 @@ -void k_heapBMFree(KHEAPBM *heap, void *ptr) { - KHEAPBLOCKBM *b; - uintptr_t ptroff; - uint32_t bi, x; - uint8_t *bm; - uint8_t id; - uint32_t max; - - for (b = heap->fblock; b; b = b->next) { - if ((uintptr_t)ptr > (uintptr_t)b && (uintptr_t)ptr < (uintptr_t)b + sizeof(KHEAPBLOCKBM) + b->size) { - /* found block */ - ptroff = (uintptr_t)ptr - (uintptr_t)&b[1]; /* get offset to get block */ - /* block offset in BM */ - bi = ptroff / b->bsize; - /* .. */ - bm = (uint8_t*)&b[1]; - /* clear allocation */ - id = bm[bi]; - /* oddly.. GCC did not optimize this */ - max = b->size / b->bsize; - for (x = bi; bm[x] == id && x < max; ++x) { - bm[x] = 0; - } - /* update free block count */ - b->used -= x - bi; - return; - } - } - - /* this error needs to be raised or reported somehow */ - return; -} |
