Support POSIX timers and clone pidfds

Merged
LE
3d ago
+1120-91

POSIX timer syscalls return ENOSYS. Add up to 64 realtime or monotonic
timers with signal or silent notification. BOOTTIME uses monotonic time.
Keep undelivered notifications until the queue has room, give waiting
timers a turn, and remove stale timer signals on delete, rearm and exec.
Timer IDs can wrap without aliasing live timers. Fork does not inherit
timers.

clone accepts CLONE_PIDFD without writing the output, and clone3 ignores
pidfd allocation and copyout failures. Create a close-on-exec pidfd before
the child can run and cancel creation if allocation or copyout fails.
Keep clone3's pidfd and parent-TID outputs separate. Notify the pidfd when
an in-process CLONE_VM child exits, and keep its parent running so it can
reap the child. Thread pidfds remain unsupported.

Timer expiry still requires the guest to enter the host. Deadline-driven
interruption of CPU-bound guests remains a follow-up. SIGEV_THREAD_ID
returns ENOSYS.

AI disclosure: OpenAI Codex was used to write and review this change.