PERFORCE change 71902 for review
David Xu
davidxu at FreeBSD.org
Sat Feb 26 10:35:43 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=71902
Change 71902 by davidxu at davidxu_tiger on 2005/02/26 10:35:21
Use actual waiter counter.
Affected files ...
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_barrier.c#5 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#15 edit
Differences ...
==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_barrier.c#5 (text+ko) ====
@@ -91,7 +91,7 @@
/* Current thread is lastest thread */
bar->b_waiters = 0;
bar->b_cycle++;
- _thr_umtx_wake(&bar->b_cycle, INT_MAX);
+ _thr_umtx_wake(&bar->b_cycle, bar->b_count);
THR_UMTX_UNLOCK(curthread, &bar->b_lock);
ret = PTHREAD_BARRIER_SERIAL_THREAD;
} else {
==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#15 (text+ko) ====
@@ -302,7 +302,7 @@
{
struct pthread *curthread = _get_curthread();
pthread_cond_t cv;
- int ret = 0;
+ int ret = 0, oldwaiters;
/*
* If the condition variable is statically initialized, perform dynamic
@@ -322,10 +322,11 @@
cv->c_seqno++;
_thr_umtx_wake(&cv->c_seqno, 1);
} else {
+ oldwaiters = cv->c_waiters;
cv->c_wakeups += cv->c_waiters;
cv->c_waiters = 0;
cv->c_seqno++;
- _thr_umtx_wake(&cv->c_seqno, INT_MAX);
+ _thr_umtx_wake(&cv->c_seqno, oldwaiters);
}
}
THR_LOCK_RELEASE(curthread, &cv->c_lock);
More information about the p4-projects
mailing list