Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}