Conversation
This splits a caller-provided memory region into TLSF_ARENA_COUNT independent sub-pools (default 4), each with its own lock. Threads are mapped to arenas by hashing their thread identifier, so concurrent allocations from different threads typically hit different locks with zero contention. - Two-phase fallback: preferred arena first, then non-blocking try-lock scan, then blocking acquire across remaining arenas. - Pointer-range ownership lookup for free/realloc: O(N) where N is the arena count, effectively O(1). - Cross-arena realloc: in-place first, then malloc+memcpy+free across arenas when the owning arena is exhausted. - Cache-line aligned arenas to prevent false sharing. - Lock abstraction macros for RTOS portability (FreeRTOS, Zephyr, etc.). - POSIX pthread_mutex_t as default, overridable before include.
WCET Results (x86-64) |
WCET Results (arm64) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This splits a caller-provided memory region into TLSF_ARENA_COUNT independent sub-pools (default 4), each with its own lock. Threads are mapped to arenas by hashing their thread identifier, so concurrent allocations from different threads typically hit different locks with zero contention.
Summary by cubic
Adds an optional thread-safe TLSF wrapper with per-arena locking to reduce contention and enable concurrent malloc/free. Also adds tlsf_usable_size and updates build, docs, and tests with pthread support.
New Features
Migration
Written for commit 0c839de. Summary will update on new commits.