773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
|
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
|
-
+
-
+
|
*/
if (timeout) {
if (tsdPtr->flags & WIN_THREAD_RUNNING) {
timeout = 0;
} else {
/*
* When dequeuing, we can leave the tsdPtr->nextPtr and
* When dequeueing, we can leave the tsdPtr->nextPtr and
* tsdPtr->prevPtr with dangling pointers because they are
* reinitialilzed w/out reading them when the thread is enqueued
* reinitialized w/out reading them when the thread is enqueued
* later.
*/
if (winCondPtr->firstPtr == tsdPtr) {
winCondPtr->firstPtr = tsdPtr->nextPtr;
} else {
tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr;
|