diff options
author | kib <kib@FreeBSD.org> | 2015-01-11 22:16:31 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-01-11 22:16:31 +0000 |
commit | aa476ee143a448f0d8b021f73e5577528f38a90f (patch) | |
tree | 03ec5a1da8c8dc62a7c7675c7ae5b550b9c53375 /lib/libc/gen/usleep.c | |
parent | cdb24d0c725ccb4b7282b84521988f70a4d4cc1d (diff) | |
download | FreeBSD-src-aa476ee143a448f0d8b021f73e5577528f38a90f.zip FreeBSD-src-aa476ee143a448f0d8b021f73e5577528f38a90f.tar.gz |
Reduce the size of the interposing table and amount of
cancellation-handling code in the libthr. Translate some syscalls
into their more generic counterpart, and remove translated syscalls
from the table.
List of the affected syscalls:
creat, open -> openat
raise -> thr_kill
sleep, usleep -> nanosleep
pause -> sigsuspend
wait, wait3, waitpid -> wait4
Suggested and reviewed by: jilles (previous version)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Diffstat (limited to 'lib/libc/gen/usleep.c')
-rw-r--r-- | lib/libc/gen/usleep.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/lib/libc/gen/usleep.c b/lib/libc/gen/usleep.c index 1d58b98..7c35f6c 100644 --- a/lib/libc/gen/usleep.c +++ b/lib/libc/gen/usleep.c @@ -40,24 +40,16 @@ __FBSDID("$FreeBSD$"); #include "libc_private.h" -#pragma weak usleep int -usleep(useconds_t useconds) -{ - - return (((int (*)(useconds_t)) - __libc_interposing[INTERPOS_usleep])(useconds)); -} - -int -__libc_usleep(useconds_t useconds) +__usleep(useconds_t useconds) { struct timespec time_to_sleep; time_to_sleep.tv_nsec = (useconds % 1000000) * 1000; time_to_sleep.tv_sec = useconds / 1000000; - return (_nanosleep(&time_to_sleep, NULL)); + return (((int (*)(const struct timespec *, struct timespec *)) + __libc_interposing[INTERPOS_nanosleep])(&time_to_sleep, NULL)); } -__weak_reference(__libc_usleep, __usleep); -__weak_reference(__libc_usleep, _usleep); +__weak_reference(__usleep, usleep); +__weak_reference(__usleep, _usleep); |