v5.10: round-9 relibc/base stubs removed (deferred from round 8)

Round-9 fix pass for items the round-8 scan flagged as still
unfixed. All per local/AGENTS.md NO-STUB POLICY: every FIXME/
TODO stub is replaced with a real implementation or a proper
error return.

relibc (0fee9dc1) - fix round-8 deferred stubs in linux platform:

1. sigqueue (signal.rs:42,45) - fill si_pid via Self::getpid()
   and si_uid via Self::getuid(). Receivers can now identify
   the sender. (Redox path was already correct.)

2. exit_thread (mod.rs:168) - proper thread exit: munmap the
   stack then call syscall!(EXIT, 0). On Linux this terminates
   only the calling thread, not the process. Previously called
   process::exit(0) which killed the whole process.

3. aarch64 rlct_clone (mod.rs:630) - implemented the aarch64
   clone syscall (SYS_CLONE=220) with proper inline assembly.
   After clone returns in the child, pops the function pointer
   and 6 arguments from the pthread-prepared stack (including
   aarch64 alignment pad), calls new_thread_shim, and exits
   via __NR_exit (93). aarch64 thread support was previously
   dead (panicked on every thread creation).

base (7d40dff0) - fix round-8 deferred stubs in initfs,
randd, ptyd:

4. initfs bulk write (tools/src/lib.rs:270) - added
   inode_table: Vec<u8> to State. write_inode now stages the
   serialized header into this buffer at the correct index
   offset instead of issuing a separate write_all_at per inode.
   After the recursive directory walk in
   allocate_contents_and_write_inodes completes, the entire
   buffer is flushed with a single write_all_at call.

5. randd entropy pool (randd/src/main.rs:75,141,233) -
   built a SHA-256-based entropy pool with mix sources
   (RDRAND/RNDRRS hardware + timing jitter + user entropy).
   PRNG re-seeds every 4096 reads. Removed all 4 TODO comments.

6. ptyd VLNEXT/VDISCARD (pty.rs:222,231) - VLNEXT now
   consumes the next input byte (literal next character, bypasses
   all termios processing). VDISCARD now clears the cooked buffer.
   Real implementations, not silent no-ops.

Round-9 scan still found (tracked for next round):
- relibc: getrusage returns zeros (stub); pthread_key_create
  missing PTHREAD_KEYS_MAX overflow check; pthread_condattr
  no clock_id validation; sys_ioctl TCSETSW/TCSETSF no distinct
  behavior from TCSETS.
- procmgr.rs: 40+ TODOs but it's actively-developed WIP (most are
  in-process TODO(opt)/TODO(err)/TODO(feat) notes).
This commit is contained in:
kellito
2026-07-27 09:22:56 +09:00
parent 70a1db5730
commit 8f3e3aae6b
2 changed files with 2 additions and 2 deletions