4 __thread int transaction_check_counter;
5 __thread jmp_buf aborttrans;
6 __thread int abortenabled;
7 __thread int * counter_reset_pointer;
13 if (abortenabled&&checktrans()) {
14 printf("Loop Abort\n");
15 transaction_check_counter=(*counter_reset_pointer=HIGH_CHECK_FREQUENCY);
31 _longjmp(aborttrans, 1);
33 transaction_check_counter=*counter_reset_pointer;
37 void errorhandler(int sig, struct sigcontext ctx) {
39 if (abortenabled&&checktrans()) {
41 sigemptyset(&toclear);
42 sigaddset(&toclear, sig);
43 sigprocmask(SIG_UNBLOCK, &toclear,NULL);
59 _longjmp(aborttrans, 1);
61 threadhandler(sig, ctx);
65 /* Create info to keep track of objects that can be locked */
66 chashlistnode_t *curr = c_list;
68 /* Inner loop to traverse the linked list of the cache lookupTable */
69 while(likely(curr != NULL)) {
70 //if the first bin in hash table is empty
71 objheader_t * headeraddr=&((objheader_t *) curr->val)[-1];
72 objheader_t *header=(objheader_t *)(((char *)curr->key)-sizeof(objheader_t));
73 unsigned int version = headeraddr->version;
75 if (header->lock==0) {
79 if (version!=header->version) {