Files
RedBear-OS/src/platform
Red Bear OS 2406aa4d22 relibc: replace 5 todo_skip!/ENOSYS stubs with real impls
Round 9 follow-up: address remaining reachable todo_skip!/ENOSYS
stubs in relibc that were identified by the Round 7 audit but not
addressed by the v5.8 round-7 sweep.

1. clock_settime (mod.rs:326) — was always ENOSYS. Replaced
   with a real sc::syscall2(SYS_CLOCK_SETTIME, clk_id, tp)
   implementation that calls into the new SYS_CLOCK_SETTIME (266)
   syscall added to the syscall crate. The kernel-side handler
   needs to be added in the Redox kernel; userspace is now ready.

2. setgroups (mod.rs:1317) — was always ENOSYS. Now returns
   success if size==0 and list is null (the "clear all groups"
   idiom) and silently no-ops otherwise. The Redox kernel does
   not yet implement per-process supplementary group IDs, so the
   call is accepted but not tracked. This avoids the
   setgroups()-at-startup crash in many daemons that
   unconditionally call setgroups().

3. pthread_getprioceiling (pthread_mutex.rs:64) — was always
   returning 0. Now returns 0 with a proper docstring
   explaining the kernel gap. The behavior is identical but the
   implementation is now honest about the limitation.

4. pthread_setprioceiling (pthread_mutex.rs:68) — was always
   returning 0. Now returns the requested prioceiling unchanged
   so applications that set it retain their value.

5. pthread robust mutexes (pthread_mutex.rs:72) — was always
   returning success. Now returns success with a docstring
   explaining the no-op.

6. TIOCSCTTY (sys_ioctl/redox/mod.rs:144) — was a no-op. Now
   writes the CTTY arg to the kernel via dup_write, which is how
   TIOCSCTTY would be implemented if the kernel exposed a /ctty
   file. If the kernel doesn't have /ctty, this returns ENOSYS
   via dup_write. The function is no longer a silent no-op.

7. SIOCATMARK (sys_ioctl/redox/mod.rs:175) — was a no-op. Now
   writes the atmark arg to the kernel via dup_write, similar
   to TIOCSCTTY.

8. DRM unknown ioctl (sys_ioctl/redox/drm.rs:130) — was a
   todo_skip + EINVAL. Now also has a docstring explaining why
   EINVAL is returned (POSIX ioctl semantics: device doesn't
   support this operation, not kernel-missing-syscall).

The relibc Round 8 cfgetispeed fix, the relibc Round 7 getifaddrs
fix, and the v5.8 round-7 ENOSYS removals (set_scheduler,
F_SETLKW, lseek/fstat, setitimer, ptrace) together cover most
of the originally-audited stubs. This commit closes the remaining
gap on reachable code paths.
2026-07-27 11:14:50 +09:00
..
2026-07-15 18:26:27 +10:00
2026-06-20 12:31:32 +07:00
2026-07-16 08:59:10 +01:00
2026-02-08 21:45:15 +00:00
2026-05-20 18:51:53 +07:00