| 24 |
|
|
| 25 |
|
#include "stdinc.h" |
| 26 |
|
#include "list.h" |
| 27 |
– |
#include "balloc.h" |
| 27 |
|
#include "dbuf.h" |
| 28 |
|
#include "memory.h" |
| 29 |
+ |
#include "mempool.h" |
| 30 |
|
|
| 31 |
< |
static BlockHeap *dbuf_heap; |
| 31 |
> |
static mp_pool_t *dbuf_pool; |
| 32 |
|
|
| 33 |
|
void |
| 34 |
|
dbuf_init(void) |
| 35 |
|
{ |
| 36 |
< |
dbuf_heap = BlockHeapCreate("dbuf", sizeof(struct dbuf_block), DBUF_HEAP_SIZE); |
| 36 |
> |
dbuf_pool = mp_pool_new(sizeof(struct dbuf_block), MP_CHUNK_SIZE_DBUF); |
| 37 |
|
} |
| 38 |
|
|
| 39 |
|
static struct dbuf_block * |
| 40 |
|
dbuf_alloc(struct dbuf_queue *qptr) |
| 41 |
|
{ |
| 42 |
< |
struct dbuf_block *block = BlockHeapAlloc(dbuf_heap); |
| 42 |
> |
struct dbuf_block *block = mp_pool_get(dbuf_pool); |
| 43 |
|
|
| 44 |
+ |
memset(block, 0, sizeof(*block)); |
| 45 |
|
dlinkAddTail(block, make_dlink_node(), &qptr->blocks); |
| 46 |
|
return block; |
| 47 |
|
} |
| 102 |
|
count -= first->size; |
| 103 |
|
dlinkDelete(ptr, &qptr->blocks); |
| 104 |
|
free_dlink_node(ptr); |
| 105 |
< |
BlockHeapFree(dbuf_heap, first); |
| 105 |
> |
mp_pool_release(first); |
| 106 |
|
} |
| 107 |
|
|
| 108 |
|
/* ..then remove data from the beginning of the queue */ |