Esempio n. 1
0
lkfqWrite(lkfq_tc_t* pQ, lkfq_data_p pD)
{
    CCURASSERT(pQ);
    CCURASSERT(pD);

    if(pQ && pD)
    {
        /* Flush the freelist before writing. */
        lkfqFlushFreeList(pQ);
#if TRANSC_LKFQ_LOCKCK
        /* pQ->tQAlloc Mutex here */
        if(pQ->bLock)
            pthread_mutex_lock(&(pQ->tQAlloc.tLock));
#endif /* TRANSC_LKFQ_LOCKCK */
        if(MISC_LKFQ_STS_FAIL ==
                lfds611_queue_enqueue(pQ->tQAlloc.pRbQs,pD))
        {
            cp_mempool_free(pQ->pMp, pD);
        }
#if TRANSC_LKFQ_LOCKCK
        /* pQ->tQAlloc Mutex here */
        if(pQ->bLock)
            pthread_mutex_unlock(&(pQ->tQAlloc.tLock));
#endif /* TRANSC_LKFQ_LOCKCK */
    }
}
Esempio n. 2
0
lkfqFlushFreeList(lkfq_tc_t * pQ)
{
    lkfq_data_p  _pD;
    BOOL         _bElemAvail = TRUE;

    CCURASSERT(pQ);

    if(pQ)
    {
#if TRANSC_LKFQ_LOCKCK
        /* pQ->tQFree Mutex here */
        if(pQ->bLock)
            pthread_mutex_lock(&(pQ->tQFree.tLock));
#endif /* TRANSC_LKFQ_LOCKCK */
        while(_bElemAvail)
        {
            if(MISC_LKFQ_STS_FAIL ==
                    lfds611_queue_dequeue( pQ->tQFree.pRbQs, &_pD ))
            {
                _bElemAvail = FALSE;
            }
            else
            {
                cp_mempool_free(pQ->pMp, _pD);
                _bElemAvail = TRUE;
            }
        }
#if TRANSC_LKFQ_LOCKCK
        /* pQ->tQFree Mutex here */
        if(pQ->bLock)
            pthread_mutex_unlock(&(pQ->tQFree.tLock));
#endif /* TRANSC_LKFQ_LOCKCK */
    }
}
Esempio n. 3
0
lkfqFree(lkfq_tc_t * pQ, lkfq_data_p pD)
{
    CCURASSERT(pQ);
    CCURASSERT(pD);

    if(pQ && pD)
        cp_mempool_free(pQ->pMp, pD);
}
Esempio n. 4
0
int main()
{
	cp_mempool *node_pool;
    node_pool = cp_mempool_create_by_option(COLLECTION_MODE_NOSYNC, 
                                            sizeof(node), 20);

	node* n1, *n2, *n3, *n4, *n5;

    n1 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n2 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n3 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n4 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n5 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );
	
	cp_mempool_free(node_pool, n1);
	printMemPoolInfo( node_pool );

	cp_mempool_free(node_pool, n3);
	printMemPoolInfo( node_pool );

	cp_mempool_free(node_pool, n5);
	printMemPoolInfo( node_pool );
	
    n2 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n2 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );

    n2 = (node *) cp_mempool_alloc(node_pool);
	printMemPoolInfo( node_pool );
}
Esempio n. 5
0
void cp_avltree_destroy_node(cp_avltree *tree, cp_avlnode *node)
{
	if (node)
	{
		if ((tree->mode & COLLECTION_MODE_DEEP))
		{
			if (tree->key_dtr) (*tree->key_dtr)(node->key);
			if ((tree->mode & COLLECTION_MODE_MULTIPLE_VALUES) && node->value)
				cp_vector_destroy_custom(node->value, tree->value_dtr);
			else if (tree->value_dtr) 
				(*tree->value_dtr)(node->value);
		}
		else if ((tree->mode & COLLECTION_MODE_MULTIPLE_VALUES) && node->value)
			cp_vector_destroy(node->value);
		if (tree->mempool)
			cp_mempool_free(tree->mempool, node);
		else 
			free(node);
	}
}