epoll, eventfd, timerfd, signalfd
The set libwayland's event loop is made of, in kernel/sys/sys_event.c: four kinds of descriptor with no inode, FD_EVENT, that read() drains and poll() reports on. They were table entries returning ENOSYS that read as done. epoll registers (descriptor, file) pairs, so a closed descriptor leaves the set; level- and edge-triggered, EPOLLONESHOT. Waiting is poll()'s, a tick at a time. The old eventfd and signalfd numbers (284, 282) were aliased to the new calls and read flags from a garbage register; they are their own entries now, with epoll_create and epoll_pwait. cmd/evtest checks each, then all four in one set. The plans are brought up to date: everything Wayland was waiting on is built except setsockopt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
This commit is contained in:
parent
43305768cb
commit
a4fbdb7437
12 changed files with 974 additions and 37 deletions
|
|
@ -280,14 +280,21 @@ SYSCALL(175, 270, pselect6)
|
|||
SYSCALL(176, 271, ppoll)
|
||||
|
||||
// --- epoll / eventfd / signalfd / timerfd ---
|
||||
// signalfd4 and eventfd2 are 289 and 290. 282 and 284 are the originals,
|
||||
// which have no flags argument -- they were once aliased to the new ones,
|
||||
// which then read their flags from whatever the caller left in a register.
|
||||
SYSCALL(177, 291, epoll_create1)
|
||||
SYSCALL(178, 233, epoll_ctl)
|
||||
SYSCALL(179, 232, epoll_wait)
|
||||
SYSCALL(180, 282, signalfd4)
|
||||
SYSCALL(181, 284, eventfd2)
|
||||
SYSCALL(180, 289, signalfd4)
|
||||
SYSCALL(181, 290, eventfd2)
|
||||
SYSCALL(182, 283, timerfd_create)
|
||||
SYSCALL(183, 286, timerfd_settime)
|
||||
SYSCALL(184, 287, timerfd_gettime)
|
||||
SYSCALL(202, 213, epoll_create)
|
||||
SYSCALL(203, 281, epoll_pwait)
|
||||
SYSCALL(204, 282, signalfd)
|
||||
SYSCALL(205, 284, eventfd)
|
||||
|
||||
// --- mounts ---
|
||||
SYSCALL(185, 165, mount)
|
||||
|
|
@ -297,8 +304,5 @@ SYSCALL(186, 166, umount2)
|
|||
// --- additional Linux numbers routed to an existing handler ---
|
||||
SYSCALL_ALIAS( 58, fork)
|
||||
SYSCALL_ALIAS( 280, utimensat)
|
||||
SYSCALL_ALIAS( 281, epoll_wait)
|
||||
SYSCALL_ALIAS( 289, signalfd4)
|
||||
SYSCALL_ALIAS( 290, eventfd2)
|
||||
SYSCALL_ALIAS( 295, readv)
|
||||
SYSCALL_ALIAS( 296, writev)
|
||||
|
|
|
|||
Loading…
Reference in a new issue