void sfree(void *ptr) { struct pool *pool = NULL; unsigned int i; if (!ptr) return; global_read_lock(); for (i = 0; i < nr_pools; i++) { if (ptr_valid(&mp[i], ptr)) { pool = &mp[i]; break; } } global_read_unlock(); if (pool) { sfree_pool(pool, ptr); return; } log_err("smalloc: ptr %p not from smalloc pool\n", ptr); }
void sfree(void *ptr) { struct pool *pool = NULL; unsigned int i; if (!ptr) return; global_read_lock(); for (i = 0; i < nr_pools; i++) { if (ptr_valid(&mp[i], ptr)) { pool = &mp[i]; break; } } global_read_unlock(); assert(pool); sfree_pool(pool, ptr); }