diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-08-30 23:29:21 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-08-30 23:29:21 +0200 |
commit | 6b1ebd29a16f2c2c91f8fcae4ce2b5dd62143821 (patch) | |
tree | 026e82163d438015f9fe828e16a174ee1a405803 /sysdeps/mach/pt-timedblock.c | |
parent | 13aeb1df3614cbb0c0dc074427ab2f95160af0bb (diff) | |
parent | 0096579c8bea920f7c42b40ea22db621da6480a5 (diff) |
Merge commit 'refs/top-bases/t/fix_have_kernel_resources' into t/fix_have_kernel_resourcest/fix_have_kernel_resources
Diffstat (limited to 'sysdeps/mach/pt-timedblock.c')
-rw-r--r-- | sysdeps/mach/pt-timedblock.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sysdeps/mach/pt-timedblock.c b/sysdeps/mach/pt-timedblock.c index 6f54726..d72ef73 100644 --- a/sysdeps/mach/pt-timedblock.c +++ b/sysdeps/mach/pt-timedblock.c @@ -30,32 +30,32 @@ /* Block THREAD. */ error_t __pthread_timedblock (struct __pthread *thread, - const struct timespec *abstime) + const struct timespec *abstime, + clockid_t clock_id) { error_t err; mach_msg_header_t msg; mach_msg_timeout_t timeout; - struct timeval now; + struct timespec now; /* We have an absolute time and now we have to convert it to a relative time. Arg. */ - err = gettimeofday(&now, NULL); + err = clock_gettime (clock_id, &now); assert (! err); if (now.tv_sec > abstime->tv_sec || (now.tv_sec == abstime->tv_sec - && now.tv_usec > ((abstime->tv_nsec + 999) / 1000))) + && now.tv_nsec > abstime->tv_nsec)) return ETIMEDOUT; timeout = (abstime->tv_sec - now.tv_sec) * 1000; - if (((abstime->tv_nsec + 999) / 1000) >= now.tv_usec) - timeout += (((abstime->tv_nsec + 999) / 1000) - now.tv_usec + 999) / 1000; + if (abstime->tv_nsec >= now.tv_nsec) + timeout += (abstime->tv_nsec - now.tv_nsec + 999999) / 1000000; else /* Need to do a carry. */ - timeout -= (now.tv_usec + 999) / 1000 - - ((abstime->tv_nsec + 999999) / 1000000); + timeout -= (now.tv_nsec - abstime->tv_nsec + 999999) / 1000000; err = __mach_msg (&msg, MACH_RCV_MSG | MACH_RCV_TIMEOUT, 0, sizeof msg, thread->wakeupmsg.msgh_remote_port, |