return status;
}
}
+ rcr_TAILWRITECASE(T, val, bintail, key, task, rcrrec, index);
+ if (mode) {
+ struct BinItem_rcr * bt=be->tail;
+ while(bt->status!=READY) {
+ BARRIER();
+ }
+ return READY;
+ } else {
+ return NOTREADY;
+ }
} else {
TraverserData * td = &((ReadBinItem_rcr *)bintail)->array[((ReadBinItem_rcr *)bintail)->index - 1];
if (unlikely(td->task==task)) {
}
return status;
}
- }
- if (ISREADBIN(bintail->type)) {
if ((((INTPTR)task)&PARENTBIN)&&(bintail->status==READY)) {
be->head=val;
return READY;
} else {
return stat;
}
- } else {
- rcr_TAILWRITECASE(T, val, bintail, key, task, rcrrec, index);
- if (mode) {
- struct BinItem_rcr * bt=be->tail;
- while(bt->status!=READY) {
- BARRIER();
- }
- return READY;
- } else {
- return NOTREADY;
- }
}
}