more
This commit is contained in:
parent
768ea68c69
commit
b59bda18f8
|
@ -277,4 +277,27 @@ static SMemAllocator *vBufPoolCreateMA(SMemAllocatorFactory *pmaf) {
|
|||
}
|
||||
|
||||
static void vBufPoolDestroyMA(SMemAllocatorFactory *pmaf, SMemAllocator *pma) { /* TODO */
|
||||
SVnode * pVnode = (SVnode *)(pmaf->impl);
|
||||
SListNode * pNode = ((SVMAWrapper *)(pma->impl))->pNode;
|
||||
SVMemAllocator *pvma = (SVMemAllocator *)(pNode->data);
|
||||
|
||||
if (T_REF_DEC(pvma) == 0) {
|
||||
if (pvma->type == E_V_ARENA_ALLOCATOR) {
|
||||
SVArenaAllocator *pvaa = &(pvma->vaa);
|
||||
while (pvaa->inuse != &(pvaa->node)) {
|
||||
SVArenaNode *pNode = pvaa->inuse;
|
||||
pvaa->inuse = pNode->prev;
|
||||
/* code */
|
||||
}
|
||||
|
||||
pvaa->inuse->ptr = pvaa->inuse->data;
|
||||
} else if (pvma->type == E_V_HEAP_ALLOCATOR) {
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
// Move node from incycle to free
|
||||
tdListAppendNode(&(pVnode->pBufPool->free), tdListPopNode(&(pVnode->pBufPool->incycle), pNode));
|
||||
// tsem_post(); todo: sem_post
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue