Esempio n. 1
0
int set_contains(intset_t *set, val_t val, int transactional)
{
	int result = 0;
	void *v;

	v = (void *)val;
	
	switch(transactional) {
		case 0:	
			result = rbtree_contains(set, v);
			break;
			
		case 1: /* Normal transaction */	
			TX_START(NL);
			result = TMrbtree_contains(set, (void *)val);
			TX_END;
			break;
    
		case 2:
		case 3:
		case 4: /* Elastic transaction */
			TX_START(EL);
			result = TMrbtree_contains(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_contains(intset_t *set, intptr_t val, tx_desc *tx)
{
	int res = 0;

    START_RO_ID(2);
    res = TMrbtree_contains(tx, set, val);
    COMMIT;

	return res;
}
Esempio n. 3
0
static int set_contains(intset_t *set, val_t val, thread_data_t *td)
{
  int result;

# ifdef DEBUG
  printf("++> set_contains(%d)\n", val);
  IO_FLUSH;
# endif

  if (!td) {
    result = rbtree_contains((rbtree_t *)set, (void *)val);
  } else {
    TM_START(0, RO);
    result = TMrbtree_contains((rbtree_t *)set, (void *)val);
    TM_COMMIT;
  }

  return result;
}