Typedefs | |
typedef DBusMemPool | DBusMemPool |
Opaque object representing a memory pool. | |
Functions | |
DBusMemPool * | _dbus_mem_pool_new (int element_size, dbus_bool_t zero_elements) |
Creates a new memory pool, or returns NULL on failure. | |
void | _dbus_mem_pool_free (DBusMemPool *pool) |
Frees a memory pool (and all elements allocated from it). | |
void * | _dbus_mem_pool_alloc (DBusMemPool *pool) |
Allocates an object from the memory pool. | |
dbus_bool_t | _dbus_mem_pool_dealloc (DBusMemPool *pool, void *element) |
Deallocates an object previously created with _dbus_mem_pool_alloc(). |
Types and functions related to DBusMemPool. A memory pool is used to decrease memory fragmentation/overhead and increase speed for blocks of small uniformly-sized objects. The main point is to avoid the overhead of a malloc block for each small object, speed is secondary.
|
Opaque object representing a memory pool. Memory pools allow avoiding per-malloc-block memory overhead when allocating a lot of small objects that are all the same size. They are slightly faster than calling malloc() also. Definition at line 33 of file dbus-mempool.h. |
|
Allocates an object from the memory pool. The object must be freed with _dbus_mem_pool_dealloc().
Definition at line 208 of file dbus-mempool.c. References _dbus_assert, _DBUS_INT_MAX, allocated_elements, block_size, blocks, dbus_malloc(), dbus_malloc0(), DBusFreedElement, DBusMemBlock, ELEMENT_PADDING, element_size, DBusMemBlock::elements, free_elements, DBusMemBlock::next, DBusFreedElement::next, NULL, DBusMemBlock::used_so_far, and zero_elements. |
|
Deallocates an object previously created with _dbus_mem_pool_alloc(). The previous object must have come from this same pool.
Definition at line 336 of file dbus-mempool.c. References _dbus_assert, _dbus_assert_not_reached, allocated_elements, blocks, dbus_free(), DBusFreedElement, DBusMemBlock, DBusMemBlock::elements, FALSE, free_elements, DBusMemBlock::next, DBusFreedElement::next, and NULL. Referenced by _dbus_hash_table_free_preallocated_entry(). |
|
Frees a memory pool (and all elements allocated from it).
Definition at line 183 of file dbus-mempool.c. References blocks, dbus_free(), DBusMemBlock, DBusMemBlock::next, and NULL. Referenced by _dbus_hash_table_unref(). |
|
Creates a new memory pool, or returns NULL on failure. Objects in the pool must be at least sizeof(void*) bytes each, due to the way memory pools work. To avoid creating 64 bit problems, this means at least 8 bytes on all platforms, unless you are 4 bytes on 32-bit and 8 bytes on 64-bit.
Definition at line 136 of file dbus-mempool.c. References _dbus_assert, allocated_elements, block_size, dbus_new0, DBusFreedElement, element_size, FALSE, NULL, and zero_elements. Referenced by _dbus_hash_table_new(). |