Merge branch 'feat/add-return-value-to-walker' into 'idf'

change(tlsf): Add return value to tlsf_walker

See merge request espressif/tlsf!9
This commit is contained in:
Guillaume Souchere
2024-03-19 15:35:55 +08:00
2 changed files with 9 additions and 5 deletions

12
tlsf.c
View File

@@ -659,7 +659,7 @@ typedef struct integrity_t
#define tlsf_insist(x) { if (!(x)) { status--; } }
static void integrity_walker(void* ptr, size_t size, int used, void* user)
static bool integrity_walker(void* ptr, size_t size, int used, void* user)
{
block_header_t* block = block_from_ptr(ptr);
integrity_t* integ = tlsf_cast(integrity_t*, user);
@@ -691,6 +691,8 @@ static void integrity_walker(void* ptr, size_t size, int used, void* user)
integ->prev_status = this_status;
integ->status += status;
return true;
}
@@ -750,10 +752,11 @@ int tlsf_check(tlsf_t tlsf)
#undef tlsf_insist
static void default_walker(void* ptr, size_t size, int used, void* user)
static bool default_walker(void* ptr, size_t size, int used, void* user)
{
(void)user;
printf("\t%p %s size: %x (%p)\n", ptr, used ? "used" : "free", (unsigned int)size, block_from_ptr(ptr));
return true;
}
void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user)
@@ -762,9 +765,10 @@ void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user)
block_header_t* block =
offset_to_block(pool, -(int)block_header_overhead);
while (block && !block_is_last(block))
bool ret_val = true;
while (block && !block_is_last(block) && ret_val == true)
{
pool_walker(
ret_val = pool_walker(
block_to_ptr(block),
block_size(block),
!block_is_free(block),

2
tlsf.h
View File

@@ -59,7 +59,7 @@ size_t tlsf_alloc_overhead(void);
size_t tlsf_fit_size(tlsf_t tlsf, size_t size);
/* Debugging. */
typedef void (*tlsf_walker)(void* ptr, size_t size, int used, void* user);
typedef bool (*tlsf_walker)(void* ptr, size_t size, int used, void* user);
void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user);
/* Returns nonzero if any internal consistency check fails. */
int tlsf_check(tlsf_t tlsf);