int set_remove(intset_t *set, val_t val, int transactional) { int result = 0; node_t *next; void *v; next = NULL; v = (void *) val; switch(transactional) { case 0: /* Unprotected */ result = rbtree_delete(set, (void *)val); break; case 1: case 2: case 3: /* Normal transaction */ TX_START(NL); result = TMrbtree_delete(set, (void *)val); TX_END; break; case 4: /* Elastic transaction */ TX_START(EL); result = TMrbtree_delete(set, (void *)val); TX_END; break; default: result=0; printf("number %d do not correspond to elasticity.\n", transactional); exit(1); } return result; }
int set_remove(intset_t *set, intptr_t val, tx_desc *tx) { int res = 0; START_ID(1); res = TMrbtree_delete(tx, set, val); COMMIT; return res; }
static int set_remove(intset_t *set, val_t val, thread_data_t *td) { int result; # ifdef DEBUG printf("++> set_remove(%d)\n", val); IO_FLUSH; # endif if (!td) { result = rbtree_delete((rbtree_t *)set, (void *)val); } else { TM_START(2, RW); result = TMrbtree_delete((rbtree_t *)set, (void *)val); TM_COMMIT; } return result; }