LKC_CANCEL
atomic_clear_long(&lkp->lk_count, LKC_CANCEL);
while ((count & (LKC_EXREQ | LKC_UPREQ | LKC_CANCEL)) &&
ncount = (count + 1) & ~(LKC_UPREQ | LKC_CANCEL |
LKC_CANCEL | LKC_SHARED);
if (count & LKC_CANCEL) {
ncount = count & ~LKC_CANCEL;
if (count & LKC_CANCEL)
if (count & LKC_CANCEL) {
if (count & LKC_CANCEL)
if (count & LKC_CANCEL) {
if (count & LKC_CANCEL) {
ncount &= ~(LKC_CANCEL | LKC_EXREQ2);
ncount = (count - LKC_SCOUNT) & ~LKC_CANCEL;
~(LKC_UPREQ | LKC_CANCEL | LKC_SHARED);
LKC_CANCEL | LKC_SHARED);
KKASSERT((count & LKC_CANCEL) == 0); /* disallowed case */
&count, count | LKC_CANCEL)) {