Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F115644853
D44389.id135812.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
19 KB
Referenced Files
None
Subscribers
None
D44389.id135812.diff
View Options
diff --git a/lib/libc/gen/sleep.c b/lib/libc/gen/sleep.c
--- a/lib/libc/gen/sleep.c
+++ b/lib/libc/gen/sleep.c
@@ -55,9 +55,7 @@
time_to_sleep.tv_sec = seconds;
time_to_sleep.tv_nsec = 0;
- if (((int (*)(const struct timespec *, struct timespec *))
- (*__libc_interposing_slot(INTERPOS_nanosleep)))(
- &time_to_sleep, &time_remaining) != -1)
+ if (INTERPOS_SYS(nanosleep)(&time_to_sleep, &time_remaining) != -1)
return (0);
if (errno != EINTR)
return (seconds); /* best guess */
diff --git a/lib/libc/gen/usleep.c b/lib/libc/gen/usleep.c
--- a/lib/libc/gen/usleep.c
+++ b/lib/libc/gen/usleep.c
@@ -45,9 +45,7 @@
time_to_sleep.tv_nsec = (useconds % 1000000) * 1000;
time_to_sleep.tv_sec = useconds / 1000000;
- return (((int (*)(const struct timespec *, struct timespec *))
- (*__libc_interposing_slot(INTERPOS_nanosleep)))(&time_to_sleep,
- NULL));
+ return (INTERPOS_SYS(nanosleep)(&time_to_sleep, NULL));
}
__weak_reference(__usleep, usleep);
diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h
--- a/lib/libc/include/libc_private.h
+++ b/lib/libc/include/libc_private.h
@@ -252,6 +252,11 @@
INTERPOS_MAX
};
+#define _INTERPOS_SYS(type, idx) \
+ ((type*)*(__libc_interposing_slot(idx)))
+#define INTERPOS_SYS(syscall) \
+ _INTERPOS_SYS(__sys_## syscall ##_t, INTERPOS_## syscall)
+
/*
* yplib internal interfaces
*/
diff --git a/lib/libc/sys/accept.c b/lib/libc/sys/accept.c
--- a/lib/libc/sys/accept.c
+++ b/lib/libc/sys/accept.c
@@ -40,6 +40,5 @@
int
accept(int s, struct sockaddr *addr, socklen_t *addrlen)
{
- return (((int (*)(int, struct sockaddr *, socklen_t *))
- *(__libc_interposing_slot(INTERPOS_accept)))(s, addr, addrlen));
+ return (INTERPOS_SYS(accept)(s, addr, addrlen));
}
diff --git a/lib/libc/sys/accept4.c b/lib/libc/sys/accept4.c
--- a/lib/libc/sys/accept4.c
+++ b/lib/libc/sys/accept4.c
@@ -40,7 +40,5 @@
int
accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags)
{
- return (((int (*)(int, struct sockaddr *, socklen_t *, int))
- *(__libc_interposing_slot(INTERPOS_accept4)))
- (s, addr, addrlen, flags));
+ return (INTERPOS_SYS(accept4)(s, addr, addrlen, flags));
}
diff --git a/lib/libc/sys/aio_suspend.c b/lib/libc/sys/aio_suspend.c
--- a/lib/libc/sys/aio_suspend.c
+++ b/lib/libc/sys/aio_suspend.c
@@ -40,8 +40,5 @@
aio_suspend(const struct aiocb * const iocbs[], int niocb,
const struct timespec *timeout)
{
- return (((int (*)(const struct aiocb * const[], int,
- const struct timespec *))
- *(__libc_interposing_slot(INTERPOS_aio_suspend)))
- (iocbs, niocb, timeout));
+ return (INTERPOS_SYS(aio_suspend)(iocbs, niocb, timeout));
}
diff --git a/lib/libc/sys/clock_nanosleep.c b/lib/libc/sys/clock_nanosleep.c
--- a/lib/libc/sys/clock_nanosleep.c
+++ b/lib/libc/sys/clock_nanosleep.c
@@ -41,8 +41,5 @@
clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp,
struct timespec *rmtp)
{
- return (((int (*)(clockid_t, int, const struct timespec *,
- struct timespec *))
- *(__libc_interposing_slot(INTERPOS_clock_nanosleep)))
- (clock_id, flags, rqtp, rmtp));
+ return (INTERPOS_SYS(clock_nanosleep)(clock_id, flags, rqtp, rmtp));
}
diff --git a/lib/libc/sys/close.c b/lib/libc/sys/close.c
--- a/lib/libc/sys/close.c
+++ b/lib/libc/sys/close.c
@@ -40,5 +40,5 @@
int
close(int fd)
{
- return (((int (*)(int))*(__libc_interposing_slot(INTERPOS_close)))(fd));
+ return (INTERPOS_SYS(close)(fd));
}
diff --git a/lib/libc/sys/connect.c b/lib/libc/sys/connect.c
--- a/lib/libc/sys/connect.c
+++ b/lib/libc/sys/connect.c
@@ -40,6 +40,5 @@
int
connect(int s, const struct sockaddr *addr, socklen_t addrlen)
{
- return (((int (*)(int, const struct sockaddr *, socklen_t))
- *(__libc_interposing_slot(INTERPOS_connect)))(s, addr, addrlen));
+ return (INTERPOS_SYS(connect)(s, addr, addrlen));
}
diff --git a/lib/libc/sys/creat.c b/lib/libc/sys/creat.c
--- a/lib/libc/sys/creat.c
+++ b/lib/libc/sys/creat.c
@@ -43,8 +43,7 @@
int
__creat(const char *path, mode_t mode)
{
- return (((int (*)(int, const char *, int, ...))
- *(__libc_interposing_slot(INTERPOS_openat)))
- (AT_FDCWD, path, O_WRONLY | O_CREAT | O_TRUNC, mode));
+ return (INTERPOS_SYS(openat)(AT_FDCWD, path,
+ O_WRONLY | O_CREAT | O_TRUNC, mode));
}
diff --git a/lib/libc/sys/fcntl.c b/lib/libc/sys/fcntl.c
--- a/lib/libc/sys/fcntl.c
+++ b/lib/libc/sys/fcntl.c
@@ -49,6 +49,5 @@
arg = va_arg(args, long);
va_end(args);
- return (((int (*)(int, int, ...))
- *(__libc_interposing_slot(INTERPOS_fcntl)))(fd, cmd, arg));
+ return (INTERPOS_SYS(fcntl)(fd, cmd, arg));
}
diff --git a/lib/libc/sys/fdatasync.c b/lib/libc/sys/fdatasync.c
--- a/lib/libc/sys/fdatasync.c
+++ b/lib/libc/sys/fdatasync.c
@@ -37,6 +37,5 @@
int
fdatasync(int fd)
{
- return (((int (*)(int))*(__libc_interposing_slot(INTERPOS_fdatasync)))
- (fd));
+ return (INTERPOS_SYS(fdatasync)(fd));
}
diff --git a/lib/libc/sys/fork.c b/lib/libc/sys/fork.c
--- a/lib/libc/sys/fork.c
+++ b/lib/libc/sys/fork.c
@@ -39,5 +39,5 @@
pid_t
fork(void)
{
- return (((pid_t (*)(void))*(__libc_interposing_slot(INTERPOS_fork)))());
+ return (INTERPOS_SYS(fork)());
}
diff --git a/lib/libc/sys/fsync.c b/lib/libc/sys/fsync.c
--- a/lib/libc/sys/fsync.c
+++ b/lib/libc/sys/fsync.c
@@ -39,5 +39,5 @@
int
fsync(int fd)
{
- return (((int (*)(int))*(__libc_interposing_slot(INTERPOS_fsync)))(fd));
+ return (INTERPOS_SYS(fsync)(fd));
}
diff --git a/lib/libc/sys/kevent.c b/lib/libc/sys/kevent.c
--- a/lib/libc/sys/kevent.c
+++ b/lib/libc/sys/kevent.c
@@ -41,8 +41,6 @@
kevent(int kq, const struct kevent *changelist, int nchanges,
struct kevent *eventlist, int nevents, const struct timespec *timeout)
{
- return (((int (*)(int, const struct kevent *, int,
- struct kevent *, int, const struct timespec *))
- *(__libc_interposing_slot(INTERPOS_kevent)))
- (kq, changelist, nchanges, eventlist, nevents, timeout));
+ return (INTERPOS_SYS(kevent)(kq, changelist, nchanges, eventlist,
+ nevents, timeout));
}
diff --git a/lib/libc/sys/lockf.c b/lib/libc/sys/lockf.c
--- a/lib/libc/sys/lockf.c
+++ b/lib/libc/sys/lockf.c
@@ -78,6 +78,5 @@
/* NOTREACHED */
}
- return (((int (*)(int, int, ...))
- *(__libc_interposing_slot(INTERPOS_fcntl)))(filedes, cmd, &fl));
+ return (INTERPOS_SYS(fcntl)(filedes, cmd, (intptr_t)&fl));
}
diff --git a/lib/libc/sys/msync.c b/lib/libc/sys/msync.c
--- a/lib/libc/sys/msync.c
+++ b/lib/libc/sys/msync.c
@@ -40,6 +40,5 @@
int
msync(void *addr, size_t len, int flags)
{
- return (((int (*)(void *, size_t, int))
- *(__libc_interposing_slot(INTERPOS_msync)))(addr, len, flags));
+ return (INTERPOS_SYS(msync)(addr, len, flags));
}
diff --git a/lib/libc/sys/nanosleep.c b/lib/libc/sys/nanosleep.c
--- a/lib/libc/sys/nanosleep.c
+++ b/lib/libc/sys/nanosleep.c
@@ -39,6 +39,5 @@
int
nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
{
- return (((int (*)(const struct timespec *, struct timespec *))
- *(__libc_interposing_slot(INTERPOS_nanosleep)))(rqtp, rmtp));
+ return (INTERPOS_SYS(nanosleep)(rqtp, rmtp));
}
diff --git a/lib/libc/sys/open.c b/lib/libc/sys/open.c
--- a/lib/libc/sys/open.c
+++ b/lib/libc/sys/open.c
@@ -50,7 +50,5 @@
} else {
mode = 0;
}
- return (((int (*)(int, const char *, int, ...))
- *(__libc_interposing_slot(INTERPOS_openat)))
- (AT_FDCWD, path, flags, mode));
+ return (INTERPOS_SYS(openat)(AT_FDCWD, path, flags, mode));
}
diff --git a/lib/libc/sys/openat.c b/lib/libc/sys/openat.c
--- a/lib/libc/sys/openat.c
+++ b/lib/libc/sys/openat.c
@@ -53,7 +53,5 @@
} else {
mode = 0;
}
- return (((int (*)(int, const char *, int, ...))
- *(__libc_interposing_slot(INTERPOS_openat)))
- (fd, path, flags, mode));
+ return (INTERPOS_SYS(openat)(fd, path, flags, mode));
}
diff --git a/lib/libc/sys/pdfork.c b/lib/libc/sys/pdfork.c
--- a/lib/libc/sys/pdfork.c
+++ b/lib/libc/sys/pdfork.c
@@ -37,7 +37,5 @@
pid_t
pdfork(int *fdp, int flags)
{
- return (((pid_t (*)(int *, int))
- *(__libc_interposing_slot(INTERPOS_pdfork)))
- (fdp, flags));
+ return (INTERPOS_SYS(pdfork)(fdp, flags));
}
diff --git a/lib/libc/sys/poll.c b/lib/libc/sys/poll.c
--- a/lib/libc/sys/poll.c
+++ b/lib/libc/sys/poll.c
@@ -39,6 +39,5 @@
int
poll(struct pollfd pfd[], nfds_t nfds, int timeout)
{
- return (((int (*)(struct pollfd *, nfds_t, int))
- *(__libc_interposing_slot(INTERPOS_poll)))(pfd, nfds, timeout));
+ return (INTERPOS_SYS(poll)(pfd, nfds, timeout));
}
diff --git a/lib/libc/sys/ppoll.c b/lib/libc/sys/ppoll.c
--- a/lib/libc/sys/ppoll.c
+++ b/lib/libc/sys/ppoll.c
@@ -40,7 +40,5 @@
ppoll(struct pollfd pfd[], nfds_t nfds, const struct timespec *__restrict
timeout, const sigset_t *__restrict newsigmask)
{
- return (((int (*)(struct pollfd *, nfds_t, const struct timespec *,
- const sigset_t *))*(__libc_interposing_slot(INTERPOS_ppoll)))
- (pfd, nfds, timeout, newsigmask));
+ return (INTERPOS_SYS(ppoll)(pfd, nfds, timeout, newsigmask));
}
diff --git a/lib/libc/sys/pselect.c b/lib/libc/sys/pselect.c
--- a/lib/libc/sys/pselect.c
+++ b/lib/libc/sys/pselect.c
@@ -40,7 +40,5 @@
pselect(int n, fd_set *rs, fd_set *ws, fd_set *es, const struct timespec *t,
const sigset_t *s)
{
- return (((int (*)(int, fd_set *, fd_set *, fd_set *,
- const struct timespec *, const sigset_t *))
- *(__libc_interposing_slot(INTERPOS_pselect)))(n, rs, ws, es, t, s));
+ return (INTERPOS_SYS(pselect)(n, rs, ws, es, t, s));
}
diff --git a/lib/libc/sys/read.c b/lib/libc/sys/read.c
--- a/lib/libc/sys/read.c
+++ b/lib/libc/sys/read.c
@@ -40,6 +40,5 @@
ssize_t
read(int fd, void *buf, size_t nbytes)
{
- return (((ssize_t (*)(int, void *, size_t))
- *(__libc_interposing_slot(INTERPOS_read)))(fd, buf, nbytes));
+ return (INTERPOS_SYS(read)(fd, buf, nbytes));
}
diff --git a/lib/libc/sys/readv.c b/lib/libc/sys/readv.c
--- a/lib/libc/sys/readv.c
+++ b/lib/libc/sys/readv.c
@@ -41,6 +41,5 @@
ssize_t
readv(int fd, const struct iovec *iov, int iovcnt)
{
- return (((ssize_t (*)(int, const struct iovec *, int))
- *(__libc_interposing_slot(INTERPOS_readv)))(fd, iov, iovcnt));
+ return (INTERPOS_SYS(readv)(fd, iov, iovcnt));
}
diff --git a/lib/libc/sys/recv.c b/lib/libc/sys/recv.c
--- a/lib/libc/sys/recv.c
+++ b/lib/libc/sys/recv.c
@@ -42,8 +42,5 @@
* POSIX says recv() shall be a cancellation point, so call the
* cancellation-enabled recvfrom() and not _recvfrom().
*/
- return (((ssize_t (*)(int, void *, size_t, int,
- struct sockaddr *, socklen_t *))
- *(__libc_interposing_slot(INTERPOS_recvfrom)))
- (s, buf, len, flags, NULL, NULL));
+ return (INTERPOS_SYS(recvfrom)(s, buf, len, flags, NULL, NULL));
}
diff --git a/lib/libc/sys/recvfrom.c b/lib/libc/sys/recvfrom.c
--- a/lib/libc/sys/recvfrom.c
+++ b/lib/libc/sys/recvfrom.c
@@ -41,8 +41,5 @@
recvfrom(int s, void *buf, size_t len, int flags,
struct sockaddr * __restrict from, socklen_t * __restrict fromlen)
{
- return (((ssize_t (*)(int, void *, size_t, int,
- struct sockaddr *, socklen_t *))
- *(__libc_interposing_slot(INTERPOS_recvfrom)))
- (s, buf, len, flags, from, fromlen));
+ return (INTERPOS_SYS(recvfrom)(s, buf, len, flags, from, fromlen));
}
diff --git a/lib/libc/sys/recvmsg.c b/lib/libc/sys/recvmsg.c
--- a/lib/libc/sys/recvmsg.c
+++ b/lib/libc/sys/recvmsg.c
@@ -40,6 +40,5 @@
ssize_t
recvmsg(int s, struct msghdr *msg, int flags)
{
- return (((int (*)(int, struct msghdr *, int))
- *(__libc_interposing_slot(INTERPOS_recvmsg)))(s, msg, flags));
+ return (INTERPOS_SYS(recvmsg)(s, msg, flags));
}
diff --git a/lib/libc/sys/select.c b/lib/libc/sys/select.c
--- a/lib/libc/sys/select.c
+++ b/lib/libc/sys/select.c
@@ -39,6 +39,5 @@
int
select(int n, fd_set *rs, fd_set *ws, fd_set *es, struct timeval *t)
{
- return (((int (*)(int, fd_set *, fd_set *, fd_set *, struct timeval *))
- *(__libc_interposing_slot(INTERPOS_select)))(n, rs, ws, es, t));
+ return (INTERPOS_SYS(select)(n, rs, ws, es, t));
}
diff --git a/lib/libc/sys/send.c b/lib/libc/sys/send.c
--- a/lib/libc/sys/send.c
+++ b/lib/libc/sys/send.c
@@ -42,8 +42,5 @@
* POSIX says send() shall be a cancellation point, so call the
* cancellation-enabled sendto() and not _sendto().
*/
- return (((ssize_t (*)(int, const void *, size_t, int,
- const struct sockaddr *, socklen_t))
- *__libc_interposing_slot(INTERPOS_sendto))(s, msg, len, flags,
- NULL, 0));
+ return (INTERPOS_SYS(sendto)(s, msg, len, flags, NULL, 0));
}
diff --git a/lib/libc/sys/sendmsg.c b/lib/libc/sys/sendmsg.c
--- a/lib/libc/sys/sendmsg.c
+++ b/lib/libc/sys/sendmsg.c
@@ -40,6 +40,5 @@
ssize_t
sendmsg(int s, const struct msghdr *msg, int flags)
{
- return (((int (*)(int, const struct msghdr *, int))
- *(__libc_interposing_slot(INTERPOS_sendmsg)))(s, msg, flags));
+ return (INTERPOS_SYS(sendmsg)(s, msg, flags));
}
diff --git a/lib/libc/sys/sendto.c b/lib/libc/sys/sendto.c
--- a/lib/libc/sys/sendto.c
+++ b/lib/libc/sys/sendto.c
@@ -41,8 +41,5 @@
sendto(int s, const void *msg, size_t len, int flags,
const struct sockaddr *to, socklen_t tolen)
{
- return (((ssize_t (*)(int, const void *, size_t, int,
- const struct sockaddr *, socklen_t))
- *(__libc_interposing_slot(INTERPOS_sendto)))
- (s, msg, len, flags, to, tolen));
+ return (INTERPOS_SYS(sendto)(s, msg, len, flags, to, tolen));
}
diff --git a/lib/libc/sys/setcontext.c b/lib/libc/sys/setcontext.c
--- a/lib/libc/sys/setcontext.c
+++ b/lib/libc/sys/setcontext.c
@@ -42,6 +42,5 @@
int
setcontext(const ucontext_t *uc)
{
- return (((int (*)(const ucontext_t *))
- *(__libc_interposing_slot(INTERPOS_setcontext)))(uc));
+ return (INTERPOS_SYS(setcontext)(uc));
}
diff --git a/lib/libc/sys/sigaction.c b/lib/libc/sys/sigaction.c
--- a/lib/libc/sys/sigaction.c
+++ b/lib/libc/sys/sigaction.c
@@ -40,6 +40,5 @@
int
sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
{
- return (((int (*)(int, const struct sigaction *, struct sigaction *))
- *(__libc_interposing_slot(INTERPOS_sigaction)))(sig, act, oact));
+ return (INTERPOS_SYS(sigaction)(sig, act, oact));
}
diff --git a/lib/libc/sys/sigprocmask.c b/lib/libc/sys/sigprocmask.c
--- a/lib/libc/sys/sigprocmask.c
+++ b/lib/libc/sys/sigprocmask.c
@@ -40,6 +40,5 @@
int
sigprocmask(int how, const sigset_t *set, sigset_t *oset)
{
- return (((int (*)(int, const sigset_t *, sigset_t *))
- *(__libc_interposing_slot(INTERPOS_sigprocmask)))(how, set, oset));
+ return (INTERPOS_SYS(sigprocmask)(how, set, oset));
}
diff --git a/lib/libc/sys/sigsuspend.c b/lib/libc/sys/sigsuspend.c
--- a/lib/libc/sys/sigsuspend.c
+++ b/lib/libc/sys/sigsuspend.c
@@ -40,6 +40,5 @@
int
sigsuspend(const sigset_t *set)
{
- return (((int (*)(const sigset_t *))
- *(__libc_interposing_slot(INTERPOS_sigsuspend)))(set));
+ return (INTERPOS_SYS(sigsuspend)(set));
}
diff --git a/lib/libc/sys/sigtimedwait.c b/lib/libc/sys/sigtimedwait.c
--- a/lib/libc/sys/sigtimedwait.c
+++ b/lib/libc/sys/sigtimedwait.c
@@ -40,7 +40,5 @@
sigtimedwait(const sigset_t * __restrict set, siginfo_t * __restrict info,
const struct timespec * __restrict t)
{
- return (((int (*)(const sigset_t *, siginfo_t *,
- const struct timespec *))
- *(__libc_interposing_slot(INTERPOS_sigtimedwait)))(set, info, t));
+ return (INTERPOS_SYS(sigtimedwait)(set, info, t));
}
diff --git a/lib/libc/sys/sigwait.c b/lib/libc/sys/sigwait.c
--- a/lib/libc/sys/sigwait.c
+++ b/lib/libc/sys/sigwait.c
@@ -32,6 +32,5 @@
int
sigwait(const sigset_t *set, int *sig)
{
- return (((int (*)(const sigset_t *, int *))
- *(__libc_interposing_slot(INTERPOS_sigwait)))(set, sig));
+ return (INTERPOS_SYS(sigwait)(set, sig));
}
diff --git a/lib/libc/sys/sigwaitinfo.c b/lib/libc/sys/sigwaitinfo.c
--- a/lib/libc/sys/sigwaitinfo.c
+++ b/lib/libc/sys/sigwaitinfo.c
@@ -39,6 +39,5 @@
int
sigwaitinfo(const sigset_t * __restrict set, siginfo_t * __restrict info)
{
- return (((int (*)(const sigset_t *, siginfo_t *))
- *(__libc_interposing_slot(INTERPOS_sigwaitinfo)))(set, info));
+ return (INTERPOS_SYS(sigwaitinfo)(set, info));
}
diff --git a/lib/libc/sys/swapcontext.c b/lib/libc/sys/swapcontext.c
--- a/lib/libc/sys/swapcontext.c
+++ b/lib/libc/sys/swapcontext.c
@@ -44,6 +44,5 @@
int
swapcontext(ucontext_t *oucp, const ucontext_t *ucp)
{
- return (((int (*)(ucontext_t *, const ucontext_t *))
- *(__libc_interposing_slot(INTERPOS_swapcontext)))(oucp, ucp));
+ return (INTERPOS_SYS(swapcontext)(oucp, ucp));
}
diff --git a/lib/libc/sys/wait.c b/lib/libc/sys/wait.c
--- a/lib/libc/sys/wait.c
+++ b/lib/libc/sys/wait.c
@@ -43,9 +43,7 @@
pid_t
__wait(int *istat)
{
- return (((pid_t (*)(pid_t, int *, int, struct rusage *))
- *(__libc_interposing_slot(INTERPOS_wait4)))
- (WAIT_ANY, istat, 0, NULL));
+ return (INTERPOS_SYS(wait4)(WAIT_ANY, istat, 0, NULL));
}
__weak_reference(__wait, wait);
diff --git a/lib/libc/sys/wait3.c b/lib/libc/sys/wait3.c
--- a/lib/libc/sys/wait3.c
+++ b/lib/libc/sys/wait3.c
@@ -43,9 +43,7 @@
pid_t
__wait3(int *istat, int options, struct rusage *rup)
{
- return (((pid_t (*)(pid_t, int *, int, struct rusage *))
- *(__libc_interposing_slot(INTERPOS_wait4)))
- (WAIT_ANY, istat, options, rup));
+ return (INTERPOS_SYS(wait4)(WAIT_ANY, istat, options, rup));
}
__weak_reference(__wait3, wait3);
diff --git a/lib/libc/sys/wait4.c b/lib/libc/sys/wait4.c
--- a/lib/libc/sys/wait4.c
+++ b/lib/libc/sys/wait4.c
@@ -39,7 +39,5 @@
pid_t
wait4(pid_t pid, int *status, int options, struct rusage *ru)
{
- return (((pid_t (*)(pid_t, int *, int, struct rusage *))
- *(__libc_interposing_slot(INTERPOS_wait4)))
- (pid, status, options, ru));
+ return (INTERPOS_SYS(wait4)(pid, status, options, ru));
}
diff --git a/lib/libc/sys/wait6.c b/lib/libc/sys/wait6.c
--- a/lib/libc/sys/wait6.c
+++ b/lib/libc/sys/wait6.c
@@ -41,7 +41,5 @@
wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *ru,
siginfo_t *infop)
{
- return (((pid_t (*)(idtype_t, id_t, int *, int, struct __wrusage *,
- siginfo_t *))*(__libc_interposing_slot(INTERPOS_wait6)))
- (idtype, id, status, options, ru, infop));
+ return (INTERPOS_SYS(wait6)(idtype, id, status, options, ru, infop));
}
diff --git a/lib/libc/sys/waitid.c b/lib/libc/sys/waitid.c
--- a/lib/libc/sys/waitid.c
+++ b/lib/libc/sys/waitid.c
@@ -46,9 +46,7 @@
int status;
pid_t ret;
- ret = ((pid_t (*)(idtype_t, id_t, int *, int, struct __wrusage *,
- siginfo_t *))*(__libc_interposing_slot(INTERPOS_wait6)))
- (idtype, id, &status, flags, NULL, info);
+ ret = INTERPOS_SYS(wait6)(idtype, id, &status, flags, NULL, info);
/*
* According to SUSv4, waitid() shall not return a PID when a
diff --git a/lib/libc/sys/waitpid.c b/lib/libc/sys/waitpid.c
--- a/lib/libc/sys/waitpid.c
+++ b/lib/libc/sys/waitpid.c
@@ -43,9 +43,7 @@
pid_t
__waitpid(pid_t pid, int *istat, int options)
{
- return (((pid_t (*)(pid_t, int *, int, struct rusage *))
- *(__libc_interposing_slot(INTERPOS_wait4)))
- (pid, istat, options, NULL));
+ return (INTERPOS_SYS(wait4)(pid, istat, options, NULL));
}
__weak_reference(__waitpid, waitpid);
diff --git a/lib/libc/sys/write.c b/lib/libc/sys/write.c
--- a/lib/libc/sys/write.c
+++ b/lib/libc/sys/write.c
@@ -40,6 +40,5 @@
ssize_t
write(int fd, const void *buf, size_t nbytes)
{
- return (((ssize_t (*)(int, const void *, size_t))
- *(__libc_interposing_slot(INTERPOS_write)))(fd, buf, nbytes));
+ return (INTERPOS_SYS(write)(fd, buf, nbytes));
}
diff --git a/lib/libc/sys/writev.c b/lib/libc/sys/writev.c
--- a/lib/libc/sys/writev.c
+++ b/lib/libc/sys/writev.c
@@ -41,6 +41,5 @@
ssize_t
writev(int fd, const struct iovec *iov, int iovcnt)
{
- return (((ssize_t (*)(int, const struct iovec *, int))
- *(__libc_interposing_slot(INTERPOS_writev)))(fd, iov, iovcnt));
+ return (INTERPOS_SYS(writev)(fd, iov, iovcnt));
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 27, 11:50 AM (2 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17817248
Default Alt Text
D44389.id135812.diff (19 KB)
Attached To
Mode
D44389: libc: INTERPOS_SYS macro for interposed syscalls
Attached
Detach File
Event Timeline
Log In to Comment