summaryrefslogtreecommitdiffstats
path: root/firmware/include/chunk_alloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/chunk_alloc.h')
-rw-r--r--firmware/include/chunk_alloc.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/firmware/include/chunk_alloc.h b/firmware/include/chunk_alloc.h
index 7d64d4b591..ea9f6a64cb 100644
--- a/firmware/include/chunk_alloc.h
+++ b/firmware/include/chunk_alloc.h
@@ -28,16 +28,23 @@
#define CHUNK_ALLOC_INVALID ((size_t)-1)
+
struct chunk_alloc_header
{
+ struct buflib_context *context; /* buflib context for all allocations */
+ int chunk_handle; /* data handle of buflib allocated array of struct chunk */
+
size_t chunk_bytes_total; /* total bytes in current chunk */
size_t chunk_bytes_free; /* free bytes in current chunk */
size_t chunk_size; /* default chunk size */
size_t count; /* total chunks possible */
size_t current; /* current chunk in use */
- struct buflib_context *context; /* buflib context for all allocations */
- int chunk_handle; /* data handle of buflib allocated array of struct chunk */
+ struct {
+ int handle;
+ size_t min_offset;
+ size_t max_offset;
+ } cached_chunk;
};
void chunk_alloc_free(struct chunk_alloc_header *hdr);
@@ -55,7 +62,7 @@ size_t chunk_alloc(struct chunk_alloc_header *hdr, size_t size); /* Returns offs
void* chunk_get_data(struct chunk_alloc_header *hdr, size_t offset); /* Returns data */
-void chunk_put_data(struct chunk_alloc_header *hdr, size_t offset);
+void chunk_put_data(struct chunk_alloc_header *hdr, void* data, size_t offset);
static inline bool chunk_alloc_is_initialized(struct chunk_alloc_header *hdr)
{