THR_CANCEL_NEEDED
if (oldval & THR_CANCEL_NEEDED)
newval = oldval | THR_CANCEL_NEEDED;
if (!(oldval & THR_CANCEL_NEEDED) && SHOULD_ASYNC_CANCEL(newval))
curthread->cancelflags &= ~THR_CANCEL_NEEDED;
THR_CANCEL_NEEDED)) == THR_CANCEL_NEEDED)
THR_CANCEL_NEEDED | THR_CANCEL_AT_POINT)) == \
(THR_CANCEL_NEEDED | THR_CANCEL_AT_POINT))