/* ============================================================================= * TMlist_free * ============================================================================= */ void TMlist_free (TM_ARGDECL list_t* listPtr) { list_node_t* nextPtr = (list_node_t*)TM_SHARED_READ_P(listPtr->head.nextPtr); TMfreeList(TM_ARG nextPtr); TM_FREE(listPtr); }
/* ============================================================================= * list_clear * -- Removes all elements * ============================================================================= */ void TMlist_clear (TM_ARGDECL list_t* listPtr) { TMfreeList(TM_ARG listPtr->head.nextPtr); listPtr->head.nextPtr = NULL; listPtr->size = 0; }
/* ============================================================================= * TMlist_free * ============================================================================= */ void list_stm_v2::TMlist_free (TM_ARGDECL list_t* listPtr) { list_node_t* nextPtr = (list_node_t*)SLOW_PATH_SHARED_READ_P(listPtr->head.nextPtr); TMfreeList(TM_ARG nextPtr); SLOW_PATH_FREE(listPtr); }
/* ============================================================================= * TMfreeList * ============================================================================= */ static void TMfreeList (TM_ARGDECL list_node_t* nodePtr) { if (nodePtr != NULL) { list_node_t* nextPtr = (list_node_t*)TM_SHARED_READ_P(nodePtr->nextPtr); TMfreeList(TM_ARG nextPtr); TMfreeNode(TM_ARG nodePtr); } }