2004-10-19 Roland McGrath <roland@redhat.com>

* configure.ac: Check for sys/epoll.h.
	* desc.c: Protect #include <sys/epoll.h> with [HAVE_SYS_EPOLL_H].
	(epollctls, epollevents): Protect each entry with #ifdef on its macro.
This commit is contained in:
Roland McGrath 2004-10-20 02:17:41 +00:00
parent e26a37832e
commit 63d6e54c8b

56
desc.c
View File

@ -36,6 +36,8 @@
#include <sys/file.h>
#ifdef LINUX
#include <inttypes.h>
#endif
#ifdef HAVE_SYS_EPOLL_H
#include <sys/epoll.h>
#endif
@ -554,25 +556,55 @@ struct tcb *tcp;
#endif
static struct xlat epollctls[] = {
#ifdef EPOLL_CTL_ADD
{ EPOLL_CTL_ADD, "EPOLL_CTL_ADD" },
#endif
#ifdef EPOLL_CTL_MOD
{ EPOLL_CTL_MOD, "EPOLL_CTL_MOD" },
#endif
#ifdef EPOLL_CTL_DEL
{ EPOLL_CTL_DEL, "EPOLL_CTL_DEL" },
#endif
{ 0, NULL }
};
static struct xlat epollevents[] = {
#ifdef EPOLLIN
{ EPOLLIN, "EPOLLIN" },
#endif
#ifdef EPOLLPRI
{ EPOLLPRI, "EPOLLPRI" },
#endif
#ifdef EPOLLOUT
{ EPOLLOUT, "EPOLLOUT" },
#endif
#ifdef EPOLLRDNORM
{ EPOLLRDNORM, "EPOLLRDNORM" },
#endif
#ifdef EPOLLRDBAND
{ EPOLLRDBAND, "EPOLLRDBAND" },
#endif
#ifdef EPOLLWRNORM
{ EPOLLWRNORM, "EPOLLWRNORM" },
#endif
#ifdef EPOLLWRBAND
{ EPOLLWRBAND, "EPOLLWRBAND" },
#endif
#ifdef EPOLLMSG
{ EPOLLMSG, "EPOLLMSG" },
#endif
#ifdef EPOLLERR
{ EPOLLERR, "EPOLLERR" },
#endif
#ifdef EPOLLHUP
{ EPOLLHUP, "EPOLLHUP" },
#endif
#ifdef EPOLLONESHOT
{ EPOLLONESHOT, "EPOLLONESHOT" },
#endif
#ifdef EPOLLET
{ EPOLLET, "EPOLLET" },
#endif
{ 0, NULL }
};
@ -585,6 +617,7 @@ struct tcb *tcp;
return 0;
}
#ifdef HAVE_SYS_EPOLL_H
static void
print_epoll_event(ev)
struct epoll_event *ev;
@ -597,22 +630,27 @@ struct epoll_event *ev;
tprintf(", {u32=%" PRIu32 ", u64=%" PRIu64 "}}",
ev->data.u32, ev->data.u64);
}
#endif
int
sys_epoll_ctl(tcp)
struct tcb *tcp;
{
if (entering(tcp)) {
struct epoll_event ev;
tprintf("%ld, ", tcp->u_arg[0]);
printxval(epollctls, tcp->u_arg[1], "EPOLL_CTL_???");
tprintf(", %ld, ", tcp->u_arg[2]);
if (tcp->u_arg[3] == 0)
tprintf("NULL");
else if (umove(tcp, tcp->u_arg[3], &ev) < 0)
tprintf("{...}");
else
print_epoll_event(&ev);
else {
#ifdef HAVE_SYS_EPOLL_H
struct epoll_event ev;
else if (umove(tcp, tcp->u_arg[3], &ev) == 0)
print_epoll_event(&ev);
else
#endif
tprintf("{...}");
}
}
return 0;
}
@ -629,10 +667,9 @@ struct tcb *tcp;
else if (tcp->u_rval == 0)
tprintf("{}");
else {
#ifdef HAVE_SYS_EPOLL_H
struct epoll_event evs[tcp->u_rval];
if (umove(tcp, tcp->u_arg[1], evs) < 0)
tprintf("{...}");
else {
if (umove(tcp, tcp->u_arg[1], evs) == 0) {
unsigned long i;
tprintf("{");
for (i = 0; i < tcp->u_rval; ++i) {
@ -642,6 +679,9 @@ struct tcb *tcp;
}
tprintf("}");
}
else
#endif
tprintf("{...}");
}
tprintf(", %ld, %ld", tcp->u_arg[2], tcp->u_arg[3]);
}