123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- #ifndef _lub_blockpool_h
- #define _lub_blockpool_h
- #include <stddef.h>
- typedef struct _lub_blockpool_block lub_blockpool_block_t;
- typedef struct _lub_blockpool lub_blockpool_t;
- struct _lub_blockpool
- {
-
- lub_blockpool_block_t *m_head;
- lub_blockpool_block_t *m_tail;
- size_t m_block_size;
- size_t m_num_blocks;
- unsigned m_alloc_blocks;
- unsigned m_alloc_total_blocks;
- unsigned m_alloc_hightide_blocks;
- unsigned m_alloc_failures;
- };
- typedef struct _lub_blockpool_stats lub_blockpool_stats_t;
- struct _lub_blockpool_stats
- {
-
-
- size_t block_size;
-
- size_t num_blocks;
-
-
- size_t alloc_blocks;
-
- size_t alloc_bytes;
-
- size_t free_blocks;
-
- size_t free_bytes;
-
-
- size_t alloc_total_blocks;
-
- size_t alloc_total_bytes;
-
-
- size_t alloc_hightide_blocks;
-
- size_t alloc_hightide_bytes;
-
- size_t free_hightide_blocks;
-
- size_t free_hightide_bytes;
-
-
- size_t alloc_failures;
-
- };
- extern void
- lub_blockpool_init(
-
- lub_blockpool_t *blockpool,
-
- void *memory,
-
- size_t blocksize,
-
- unsigned blockcount
- );
- extern void *
- lub_blockpool_alloc(
-
- lub_blockpool_t *blockpool
- );
- extern void
- lub_blockpool_free(
-
- lub_blockpool_t *blockpool,
-
- void *block
- );
- void
- lub_blockpool__get_stats(
-
- lub_blockpool_t *instance,
-
- lub_blockpool_stats_t *stats
- );
- #endif
|