chunk_alloc

chunk_alloc allows arrays (or any data) to be allocated in smaller chunks

you have to save the indices..
 variable data will have variable indices you need to
 store these as [chunk_alloc] doesn't keep track
 if you have a fixed size for each
 alloc you can do indice / sizeof(data)
 or index * sizeof(data) to convert

Lots of debug stuff still in and it needs optimization

User provides chunk_size and max_chunks
max_chunks * struct chunk will be allocated at start
with (1) chunk_size allocation initially

alloc_chunk() with size = 0 shrinks the last allocation to the size of the data used

add OOM checks on buflib_alloc -- oops

move bytes available to the header -- less memory per chunk & better alignment
keep track of the current in use chunk index -- should speed things up a bit

Now allows:
realloc chunk header
larger allocations than chunk size

reallocs smaller than existing will shrink the current array
rather than alloc a new and copy data

Comments welcome :)

Change-Id: I8ed170eef73da95da19430a80b32e5debf0c8276
This commit is contained in:
William Wilgus 2023-01-08 01:42:27 -05:00 committed by William Wilgus
parent a513cee822
commit 7faf6be35f
4 changed files with 377 additions and 0 deletions

View file

@ -207,6 +207,7 @@ target/hosted/maemo/maemo-thread.c
/* Common */
#ifndef BOOTLOADER
chunk_alloc.c
common/strptokspn.c
common/ap_int.c
#endif