diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2022-10-15 23:14:27 +0100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2023-01-13 05:12:17 -0500 |
commit | 3301c5aa6db76832dbb9af8f72d29b348190fd91 (patch) | |
tree | a5f266f8673b72edb2014ec5ee49e2822250dc2e | |
parent | 879888b158376f1ea2c92dd49e0c7617d07fd5b2 (diff) | |
download | rockbox-3301c5aa6d.tar.gz rockbox-3301c5aa6d.zip |
Remove buflib allocation names, part one
Remove the name handling code, but leave the allocation structure
otherwise untouched; it's as if all callers provided a NULL name.
The public API still accepts names but names are no longer stored
or returned.
Change-Id: I6c4defcdfd255774f02030949a0fd731477e6a54
-rw-r--r-- | firmware/buflib.c | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/firmware/buflib.c b/firmware/buflib.c index 2ce9cc344c..ea57dbb379 100644 --- a/firmware/buflib.c +++ b/firmware/buflib.c @@ -118,7 +118,6 @@ enum { fidx_LEN, /* length of the block, must come first */ fidx_HANDLE, /* pointer to entry in the handle table */ fidx_OPS, /* pointer to an ops struct */ - fidx_NAME, /* name, optional and variable length, must come last */ }; /* Backward indices, used to index a block end pointer as block[-bidx_XXX] */ @@ -131,8 +130,7 @@ enum { bidx_BSIZE, /* total size of the block header */ }; -/* Number of fields in the block header, excluding the name, which is - * accounted for using the BSIZE field. Note that bidx_USER is not an +/* Number of fields in the block header. Note that bidx_USER is not an * actual field so it is not included in the count. */ #ifdef BUFLIB_HAS_CRC # define BUFLIB_NUM_FIELDS 6 @@ -192,11 +190,6 @@ static void check_block_crc(struct buflib_context *ctx, union buflib_data *block, union buflib_data *block_end); -static inline char* get_block_name(union buflib_data *block) -{ - return (char*)&block[fidx_NAME]; -} - /* Initialize buffer manager */ void buflib_init(struct buflib_context *ctx, void *buf, size_t size) @@ -401,8 +394,8 @@ move_block(struct buflib_context* ctx, union buflib_data* block, int shift) return false; int handle = ctx->handle_table - h_entry; - BDEBUGF("%s(): moving \"%s\"(id=%d) by %d(%d)\n", __func__, - get_block_name(block), handle, shift, shift*(int)sizeof(union buflib_data)); + BDEBUGF("%s(): moving id=%d by %d(%d)\n", __func__, + handle, shift, shift*(int)sizeof(union buflib_data)); new_block = block + shift; new_start = h_entry->alloc + shift*sizeof(union buflib_data); @@ -645,8 +638,7 @@ buflib_alloc(struct buflib_context *ctx, size_t size) /* Allocate a buffer of size bytes, returning a handle for it. * - * The additional name parameter gives the allocation a human-readable name, - * the ops parameter points to caller-implemented callbacks for moving and + * The ops parameter points to caller-implemented callbacks for moving and * shrinking. * * If you pass NULL for "ops", buffers are movable by default. @@ -658,12 +650,12 @@ int buflib_alloc_ex(struct buflib_context *ctx, size_t size, const char *name, struct buflib_callbacks *ops) { + (void)name; + union buflib_data *handle, *block; - size_t name_len = name ? B_ALIGN_UP(strlen(name)+1) : 0; bool last; /* This really is assigned a value before use */ int block_len; - size += name_len; size = (size + sizeof(union buflib_data) - 1) / sizeof(union buflib_data) + BUFLIB_NUM_FIELDS; @@ -749,10 +741,8 @@ buffer_alloc: block[fidx_LEN].val = size; block[fidx_HANDLE].handle = handle; block[fidx_OPS].ops = ops; - if (name_len > 0) - strcpy(get_block_name(block), name); - size_t bsize = BUFLIB_NUM_FIELDS + name_len/sizeof(union buflib_data); + size_t bsize = BUFLIB_NUM_FIELDS; union buflib_data *block_end = block + bsize; block_end[-bidx_PIN].pincount = 0; block_end[-bidx_BSIZE].val = bsize; @@ -760,8 +750,8 @@ buffer_alloc: handle->alloc = (char*)&block_end[-bidx_USER]; - BDEBUGF("buflib_alloc_ex: size=%d handle=%p clb=%p name=\"%s\"\n", - (unsigned int)size, (void *)handle, (void *)ops, name ? name : ""); + BDEBUGF("buflib_alloc_ex: size=%d handle=%p clb=%p\n", + (unsigned int)size, (void *)handle, (void *)ops); block += size; /* alloc_end must be kept current if we're taking the last block. */ @@ -868,7 +858,6 @@ free_space_at_end(struct buflib_context* ctx) ptrdiff_t diff = (ctx->last_handle - ctx->alloc_end - BUFLIB_NUM_FIELDS); diff -= 16; /* space for future handles */ diff *= sizeof(union buflib_data); /* make it bytes */ - diff -= 16; /* reserve 16 for the name */ if (diff > 0) return diff; @@ -956,9 +945,6 @@ buflib_available(struct buflib_context* ctx) int buflib_alloc_maximum(struct buflib_context* ctx, const char* name, size_t *size, struct buflib_callbacks *ops) { - /* limit name to 16 since that's what buflib_available() accounts for it */ - char buf[16]; - /* ignore ctx->compact because it's true if all movable blocks are contiguous * even if the buffer has holes due to unmovable allocations */ unsigned hints; @@ -974,9 +960,7 @@ buflib_alloc_maximum(struct buflib_context* ctx, const char* name, size_t *size, if (*size <= 0) /* OOM */ return -1; - strmemccpy(buf, name, sizeof(buf)); - - return buflib_alloc_ex(ctx, *size, buf, ops); + return buflib_alloc_ex(ctx, *size, name, ops); } /* Shrink the allocation indicated by the handle according to new_start and @@ -1091,13 +1075,9 @@ unsigned buflib_pin_count(struct buflib_context *ctx, int handle) const char* buflib_get_name(struct buflib_context *ctx, int handle) { - union buflib_data *data = handle_to_block_end(ctx, handle); - size_t len = data[-bidx_BSIZE].val; - if (len <= BUFLIB_NUM_FIELDS) - return NULL; - - data -= len; - return get_block_name(data); + (void)ctx; + (void)handle; + return ""; } #ifdef DEBUG @@ -1153,9 +1133,9 @@ void buflib_print_block_at(struct buflib_context *ctx, int block_num, if (block_num-- == 0) { - snprintf(buf, bufsize, "%8p: val: %4ld (%s)", + snprintf(buf, bufsize, "%8p: val: %4ld (%sallocated)", block, (long)block->val, - block->val > 0 ? get_block_name(block) : "<unallocated>"); + block->val > 0 ? "" : "un"); } } } |