Commit Graph

39 Commits

Author SHA1 Message Date
Red Bear OS 9bbdc2cafa Merge upstream/main (59cf8189) into submodule/base
Sync the base fork with 13 upstream commits (xhci event-processing
dedup + IRQ race fix, randd permission simplification, nvmed TimeSpec
fix, /dev/ptmx, fpath legacy-path cleanup, dynamically-linked init
fix, and more). Brings process_one_event into the tree, satisfying the
verify-fork-functions gate for base.

Conflicts resolved (3 of 8 overlapping files; 5 auto-merged):

- drivers/usb/xhcid/src/xhci/irq_reactor.rs: took upstream's
  process_one_event/EventProcessResult refactor (b2ed85ea) including
  the a01d3ce6 race fix (process events between NoEvent and
  unmasking), and re-applied the Red Bear SPURIOUS_REBOOT quirk on the
  NoEvent warning (downgrade to debug when quirked).

- randd/src/main.rs: took upstream's permission-handling
  simplification (e26db606); re-applied the RB fcntl improvement
  (F_GETFL/F_GETFD/F_SETFL/F_SETFD handling, Linux random_fops xref)
  and the is_cpu_feature_detected early-return cleanup. Dropped
  test_scheme_perms (deleted by upstream's simplification).

- Makefile: kept upstream's new /dev symlink block (dev/null, ptmx,
  random, urandom, zero, tty, stdin/stdout/stderr).

Verified: cargo check clean; 57/57 tests pass (xhcid 35, usbhubd 14,
xhci trb 8); verify-fork-functions.sh --no-fetch base reports all
upstream functions present.
2026-07-19 05:47:27 +09:00
bjorn3 01018feece Fix support for dynamically linked init 2026-07-18 10:54:07 +02:00
Red Bear OS 6e5da7259a rb: remove FEXEC_STEP reference (removed from redox_rt)
Commit bb20fe9c in relibc fork removed FEXEC_STEP diagnostic from
redox_rt::proc. The bootstrap binary in base referenced it in
exec.rs:257, causing build failure:
  error[E0425]: cannot find value  in module

Removed the diagnostic step variable and simplified the panic message.
Build now compiles cleanly.
2026-07-12 23:46:28 +03:00
Red Bear OS ab0da30613 fix: register external fds with userspace FILETABLE
Socket and RawEventQueue create fds via libredox raw syscalls that
bypass the redox-rt userspace FILETABLE. FdGuard::dup then reserves
these positions, causing SYS_DUP_INTO to destroy the existing fds.
2026-07-12 10:29:06 +03:00
Red Bear OS 75f6cf902d bootstrap: restore upstream exec.rs from commit 372b200f
Our Red Bear patches had reverted the userspace fd allocation refactor
(commit 372b200f) in exec.rs. This caused FD tracking mismatches
between the userspace FILETABLE and the kernel fd table, resulting in
EEXIST errors and fork failures.

Restored the upstream version which correctly uses redox_rt::sys::*
functions (openat, dup, sys_call_ro) that go through the FILETABLE,
and openat_into_upper for pre-init FD allocation. Also includes the
filetable_binary_fd setup and same_process flag in ExtraInfo.
2026-07-11 17:23:29 +03:00
Red Bear OS aedc416f0c bootstrap: fix FD allocation to match upstream userspace fd model
The bootstrap's start.rs used libredox::call::openat which resolved to
the bootstrap's own redox_openat_v1 in initfs.rs, calling syscall::openat
(SYS_OPENAT). This let the kernel allocate POSIX FDs 0,1,2 for
stdin/stdout/stderr, but the userspace FILETABLE was never updated.

Later, exec.rs called auth.dup(b'cur-context') via redox_rt::sys::dup,
which asked the empty FILETABLE for a free slot (returning 0), then
passed it to SYS_DUP_INTO. The kernel rejected it with EEXIST because
posix_fdtbl[0] was already occupied by stdin.

Fix: use syscall::openat_into to directly specify FD slots 0,1,2 in
start.rs, and use syscall::dup_into with a computed FD index for
cur-context in exec.rs. Both bypass the FILETABLE, which is only
populated later by redox_rt::initialize_freestanding.
2026-07-11 17:02:37 +03:00
Red Bear OS f4c7552767 bootstrap: fix refutable pattern for Option<FexecResult> 2026-07-11 14:21:59 +03:00
Red Bear OS 479138d02f bootstrap: adapt to upstream redox-rt API changes
- ExtraInfo now requires filetable_fd and same_process fields
- fexec_impl now returns Option<FexecResult>
2026-07-11 14:13:50 +03:00
Red Bear OS bd595851e2 base: apply Red Bear patches on latest upstream/main
251 files: init, acpid, ipcd, netcfg, ihdgd, virtio-gpud, scheme-utils,
inputd, block driver, ptyd, ramfs, randd, initfs bootstrap, path deps,
version +rb0.3.1, author attribution
2026-07-11 11:39:24 +03:00
Ibuki Omatsu 372b200f26 refactor: Adapt to userspace fd allocation 2026-07-01 08:20:05 -06:00
bjorn3 7757d2d32f Fix init path passed to fexec_impl
Getting this path wrong breaks dynamically linking init.
2026-04-27 20:35:05 +02:00
bjorn3 3a406b75e2 bootstrap: Only keep the initfs data mapped in the initfs process 2026-03-07 12:46:45 +01:00
bjorn3 311e180019 bootstrap: Move scheme socket creation to spawn 2026-03-06 22:25:20 +01:00
bjorn3 b31f48cb59 bootstrap: Directly pass event cap fd to procmgr 2026-03-06 22:25:19 +01:00
bjorn3 890f325368 bootstrap: Store FdGuard's in KernelSchemeMap 2026-03-06 22:25:18 +01:00
bjorn3 b641ed3741 bootstrap: Pass proc auth FdGuard by-value 2026-03-06 22:25:16 +01:00
bjorn3 0d957f8d20 bootstrap: Return FdGuard for the scheme root in spawn 2026-03-06 22:25:14 +01:00
bjorn3 fe3f09133d bootstrap: Use FdGuard for scheme_creation_cap 2026-03-06 22:25:05 +01:00
Ibuki Omatsu 2738f69224 feat: Implement std_fs_call handling to initfs, ramfs, acpi and xhci 2026-02-28 08:15:16 -07:00
Ibuki Omatsu ac3d816672 feat: Pass initial cwd fd to init 2026-02-26 06:36:30 -07:00
bjorn3 0227c0677c init: Introduce switchroot command
This sets PATH, LD_LIBRARY_PATH and runs init scripts for the new root.
In the future this could replace the entire set of services that should
run, restarting any services for which a newer executable is available
in the new root and stopping any services which don't exist in the new
root. This behavior could also be useful for soft-reboots in the future
to handle updates without rebooting the entire system.
2026-02-19 20:18:07 +01:00
bjorn3 9ec0733951 bootstrap: Move computation of schemes from initnsmgr to main 2026-02-07 20:32:09 +01:00
bjorn3 029e3a48e2 bootstrap: Use FdGuard for sync_pipe 2026-02-07 20:06:06 +01:00
bjorn3 c0c002bfbc bootstrap: Remove Arc around KernelSchemeMap 2026-02-07 20:06:02 +01:00
bjorn3 9e28791c2b Fix a couple of warnings 2026-02-07 12:19:41 +01:00
4lDO2 ebf4c4185a Fix sigqueue limit off-by-one, rustfmt. 2026-02-01 13:13:21 +01:00
bjorn3 686b052dea Support dynamic linking in initfs
With this the only changes necessary to dynamically link the initfs are
in the build recipe.
2026-01-25 20:25:01 +01:00
Ibuki Omatsu 334928f151 feat: Introduce userspace namespace manager and adapt all schemes. 2026-01-20 20:56:58 -07:00
Wildan M d08c6cbe6f Split driver log level env 2026-01-10 06:35:06 +07:00
Wildan M 992b856d66 Make boot log level adjustable 2026-01-10 04:58:11 +07:00
Ibuki Omatsu 3681e1b74a refactor: Replace unlink and rmdir with unlinkat in ramfs. Update redox-scheme and redox-rt for bootstrap. 2025-12-17 18:46:05 -07:00
bjorn3 bd184871b7 Update redox-rt 2025-12-12 21:46:32 +01:00
bjorn3 3bdcd7b04d bootstrap: Open things with O_CLOEXEC where possible 2025-12-08 22:17:41 +01:00
bjorn3 63907aff45 bootstrap: Update redox-rt 2025-12-07 20:59:32 +01:00
bjorn3 c7adb019b5 Use file as default scheme from the start
This removes one piece of state that init has to manage for the
processes it spawns. This also allows getting rid of the concept of a
default scheme from relibc if we want.
2025-12-05 20:52:50 +01:00
Jeremy Soller f629b061fa use upper fd table 2025-11-16 08:37:46 -07:00
Jeremy Soller dc605d6cb9 bootstrap: set log level to warn 2025-11-01 20:47:43 -06:00
Jeremy Soller 2c423e9a44 Update bootstrap to edition 2024 2025-10-04 08:15:24 -06:00
bjorn3 cf3d7a74f6 Add 'bootstrap/' from commit '6898d8b14c078805b7b0b6c4b5d9359ca911bbc6'
git-subtree-dir: bootstrap
git-subtree-mainline: 16e0cb79b9
git-subtree-split: 6898d8b14c
2025-04-21 19:03:38 +02:00