PERFORCE change 68319 for review
David Xu
davidxu at FreeBSD.org
Wed Jan 5 06:15:07 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=68319
Change 68319 by davidxu at davidxu_tiger on 2005/01/05 14:14:10
Fix styles.
add sem_getvalue.
Update copyright.
Affected files ...
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#7 edit
Differences ...
==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#7 (text+ko) ====
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2005 David Xu <davidxu at freebsd.org>.
* Copyright (C) 2000 Jason Evans <jasone at freebsd.org>.
* All rights reserved.
*
@@ -43,6 +44,7 @@
__weak_reference(_sem_init, sem_init);
+__weak_reference(_sem_getvalue, sem_getvalue);
__weak_reference(_sem_trywait, sem_trywait);
__weak_reference(_sem_wait, sem_wait);
__weak_reference(_sem_timedwait, sem_timedwait);
@@ -108,6 +110,23 @@
}
int
+_sem_getvalue(sem_t * __restrict sem, int * __restrict sval)
+{
+ int retval;
+
+ if (sem_check_validity(sem) != 0)
+ return (-1);
+
+ if ((*sem)->syssem != 0)
+ retval = ksem_getvalue((*sem)->semid, sval);
+ else {
+ *sval = (int)(*sem)->count;
+ retval = 0;
+ }
+ return (retval);
+}
+
+int
_sem_trywait(sem_t *sem)
{
int val;
@@ -143,11 +162,11 @@
return (retval);
}
- pthread_testcancel();
+ _pthread_testcancel();
do {
while ((val = (*sem)->count) > 0) {
- if (atomic_cmpset_acq_int(&(*sem)->count, val, val - 1))
- return (0);
+ if (atomic_cmpset_acq_int(&(*sem)->count, val, val - 1))
+ return (0);
}
oldcancel = _thr_cancel_enter(curthread);
retval = umtx_wait((struct umtx *)&(*sem)->count, 0);
@@ -178,11 +197,11 @@
* The timeout argument is only supposed to
* be checked if the thread would have blocked.
*/
- pthread_testcancel();
+ _pthread_testcancel();
do {
while ((val = (*sem)->count) > 0) {
- if (atomic_cmpset_acq_int(&(*sem)->count, val, val-1))
- return (0);
+ if (atomic_cmpset_acq_int(&(*sem)->count, val, val - 1))
+ return (0);
}
if (abstime == NULL) {
errno = EINVAL;
More information about the p4-projects
mailing list