1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "lub/blockpool.h"
- #include "private.h"
- typedef struct _lub_heap_cache_bucket lub_heap_cache_bucket_t;
- /*-------------------------------------
- * lub_heap_cache_t class
- *------------------------------------- */
- struct _lub_heap_cache {
- lub_heap_align_t m_max_block_size;
- unsigned m_num_max_blocks;
- unsigned m_num_buckets;
- size_t m_bucket_size;
- size_t m_misses;
- lub_heap_cache_bucket_t **m_bucket_lookup;
- lub_heap_cache_bucket_t **m_bucket_end;
- lub_heap_cache_bucket_t *m_bucket_start[1]; /* must be last */
- };
- lub_heap_cache_bucket_t
- *lub_heap_cache_find_bucket_from_address(lub_heap_cache_t * instance,
- const void *address);
- lub_heap_cache_bucket_t *lub_heap_cache_find_bucket_from_size(lub_heap_cache_t *
- instance,
- size_t size);
- void lub_heap_cache__get_stats(lub_heap_cache_t * this,
- lub_heap_stats_t * stats);
- /*-------------------------------------
- * lub_heap_cache_bucket_t class
- *------------------------------------- */
- struct _lub_heap_cache_bucket {
- lub_blockpool_t m_blockpool;
- lub_heap_cache_t *m_cache;
- char *m_memory_end;
- char m_memory_start[1]; /* must be last */
- };
- void
- lub_heap_cache_bucket_init(lub_heap_cache_bucket_t * instance,
- lub_heap_cache_t * cache,
- size_t block_size, size_t bucket_size);
- void *lub_heap_cache_bucket_alloc(lub_heap_cache_bucket_t * instance);
- lub_heap_status_t
- lub_heap_cache_bucket_free(lub_heap_cache_bucket_t * instance, void *ptr);
- size_t lub_heap_cache__get_max_free(lub_heap_cache_t * this);
- lub_heap_cache_bucket_t
- *lub_heap_cache_find_bucket_from_address(lub_heap_cache_t * this,
- const void *address);
- size_t lub_heap_cache_bucket__get_block_overhead(lub_heap_cache_bucket_t * this,
- const char *block);
- size_t lub_heap_cache_bucket__get_block_size(lub_heap_cache_bucket_t * this,
- const char *block);
|