SchOS/kernel/sys
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz 4743df8c4a epoll: edge-triggered descriptors lost their edges on more than one CPU
EPOLLET reported a descriptor again only after a scan had seen it not
ready. Xorg watches its clients edge-triggered; when it read part of a
client's requests and more arrived before its next scan, the socket never
looked not-ready, so it was never reported again -- X waiting on the
client, the client waiting on X. One CPU almost never hit it; on a 16-thread
laptop the desktop froze within seconds: Window Maker's menu stuck, xterm
never mapped, text gone, and Caps Lock dead because X owns the LED.

Now a still-ready descriptor is reported again whenever anything has
signalled readiness since its last report (poll_generation()), which may be
spurious, as EPOLLET permits, and is never missed. Reproduced and verified
with QEMU at -smp 8: the root menu works and xterm runs cmatrix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-25 11:59:12 +01:00
..
linux_abi.c include: one folder per subsystem, and includes that name it 2026-10-23 15:05:12 +02:00
sys_compat.c Threads 2026-10-25 03:03:50 +01:00
sys_event.c epoll: edge-triggered descriptors lost their edges on more than one CPU 2026-10-25 11:59:12 +01:00
sys_fs.c inotify, faccessat2, fsync for Linux programs, and D-Bus credentials 2026-10-25 06:40:28 +01:00
sys_mem.c Demand paging, the RTL8168H, links that come up late, and Ctrl+Alt+F1..F12 2026-10-25 11:27:48 +01:00
sys_net.c Demand paging, the RTL8168H, links that come up late, and Ctrl+Alt+F1..F12 2026-10-25 11:27:48 +01:00
sys_poll.c epoll: edge-triggered descriptors lost their edges on more than one CPU 2026-10-25 11:59:12 +01:00
sys_proc.c NetSurf: what GTK's images and libcurl's resolver needed 2026-10-25 04:10:26 +01:00
sys_sig.c Threads 2026-10-25 03:03:50 +01:00
sys_time.c Job control, function keys, and real sleeps 2026-10-25 02:37:45 +01:00
syscall.c Pseudo-terminals, and what tmux and htop needed around them 2026-10-25 02:11:10 +01:00
table.inc inotify, faccessat2, fsync for Linux programs, and D-Bus credentials 2026-10-25 06:40:28 +01:00