Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Mar 2005 13:51:30 GMT
From:      David Xu <davidxu@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 73587 for review
Message-ID:  <200503201351.j2KDpUnG013401@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=73587

Change 73587 by davidxu@davidxu_alona on 2005/03/20 13:51:28

	Calculate relative timeout value.

Affected files ...

.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#13 edit

Differences ...

==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#13 (text+ko) ====

@@ -205,6 +205,7 @@
 int
 _sem_timedwait(sem_t * __restrict sem, struct timespec * __restrict abstime)
 {
+	struct timespec ts, ts2;
 	struct pthread *curthread;
 	int val, oldcancel, retval;
 
@@ -233,8 +234,10 @@
 			errno = EINVAL;
 			return (-1);
 		}
+		clock_gettime(CLOCK_REALTIME, &ts);
+		TIMESPEC_SUB(&ts2, abstime, &ts);
 		oldcancel = _thr_cancel_enter(curthread);
-		retval = _thr_umtx_wait((umtx_t *)&(*sem)->count, 0, abstime);
+		retval = _thr_umtx_wait((umtx_t *)&(*sem)->count, 0, &ts2);
 		_thr_cancel_leave(curthread, oldcancel);
 	} while (retval == 0);
 	errno = retval;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503201351.j2KDpUnG013401>