Page MenuHomeFreeBSD

D49031.id151203.diff
No OneTemporary

D49031.id151203.diff

diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -2616,6 +2616,10 @@
}
} else if (owner == UMUTEX_RB_NOTRECOV) {
error = ENOTRECOVERABLE;
+ } else if (owner == UMUTEX_CONTESTED) {
+ /* Spurious failure, retry. */
+ umtxq_unbusy_unlocked(&uq->uq_key);
+ continue;
}
if (try != 0)
@@ -2825,6 +2829,10 @@
} else if (owner == UMUTEX_RB_NOTRECOV) {
error = ENOTRECOVERABLE;
break;
+ } else if (owner == UMUTEX_CONTESTED) {
+ /* Spurious failure, retry. */
+ umtxq_unbusy_unlocked(&uq->uq_key);
+ continue;
}
/*
@@ -2834,6 +2842,7 @@
if (error != 0)
break;
+
/*
* We set the contested bit, sleep. Otherwise the lock changed
* and we need to retry or we lost a race to the thread

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 4:20 AM (20 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28536052
Default Alt Text
D49031.id151203.diff (811 B)

Event Timeline