bitvt bit=1<<index;
if (wrmask&bit) {
//count already includes this
- status=READY;
+ status=SPECREADY;
}
b->bitindexwr=bit|wrmask;
b->bitindexrd=bit|rdmask;
if (val==((BinItem_rcr *)b)) {
b->item.status=READY;
be->head=val;
- return READY;
+ if (status&SPEC)
+ return SPECREADY;
+ else
+ return READY;
}
val=val->next;
}
if (!(td->bitindexrd & bit)) {
td->bitindexrd|=bit;
td->bitindexwr|=bit;
- if (status==NOTREADY)
- status=SPECNOTREADY;
+ status=status|SPEC;
} else
- status=READY;
+ status=SPECREADY;
be->head=val;
return status;
}
int status=bintail->status;
if (!(td->bitindex & bit)) {
td->bitindex|=bit;
- if (status==NOTREADY)
- status=SPECNOTREADY;
+ status=status|SPEC;
} else
- status=READY;
+ status=SPECREADY;
be->head=val;
return status;
}