Commit Graph

91 Commits

Author SHA1 Message Date
vasilito 203c40ab53 redoxfs: bump submodule pointer for no_std Vec fix 2026-07-06 15:20:07 +03:00
vasilito 29f08c949a base/config: fix scheme daemon service types, console respawn, init hidden-file skip, pcid timeout 2026-07-06 15:04:51 +03:00
vasilito 11d3665d7d bootloader: migrate all patches to local fork, switch recipe to path source 2026-07-06 10:11:18 +03:00
vasilito acc92b6841 redoxfs: migrate patches to local fork, switch recipe to path source 2026-07-06 07:57:38 +03:00
vasilito e8fa2ca97b config: re-enable diffutils and curl in redbear-mini; nghttp2: build with -fPIC for libcurl; relibc: bump submodule with float.h/getprogname fixes 2026-07-06 04:29:07 +03:00
vasilito 48a06bd3a8 kernel: bump submodule to d4d9961d (map FACS physical address before parsing)
FACS address from FADT is a physical address. The previous code dereferenced
it directly, causing a page fault after the FADT offset fix.
2026-07-06 02:26:51 +03:00
vasilito 2ae61a4499 kernel: bump submodule to 51f6a771 (fix FADT offsets and GS base hardening) 2026-07-06 02:01:43 +03:00
vasilito 748c5f7ac2 submodules: relibc semaphore cbindgen [export] exclude fix 2026-07-06 00:06:26 +03:00
vasilito dd10299209 submodules: relibc sem_open next_arg value fix 2026-07-06 00:03:47 +03:00
vasilito 43bc027485 submodules: relibc sem_open VaList::next_arg fix 2026-07-06 00:01:40 +03:00
vasilito ec101f9d4b submodules: update Cat 2 fork pointers to local path deps and +rb0.2.5
- relibc: variadic sem_open and local fork path deps
- base: already at latest RedBear-OS submodule/base
- bootloader/kernel/libredox/userutils: pushed local path-dep fixes
- installer/redoxfs: diverged from remote submodule/*; local commits saved,
  divergence to be resolved after build
- driver-manager: add syscall path dependency
- AGENTS.md: document +rb build metadata and no-patches-for-local-forks rule
- remove dead patch symlinks from recipes/core/relibc (path-source local fork)
2026-07-05 23:58:20 +03:00
vasilito b8aac3c9bc D7: editor multi-cursor support
Add secondary_cursors field to Editor with insert_char_multi,
delete_back_multi, delete_forward_multi methods. Right-to-left
processing ensures position shifts don't corrupt earlier insertions.

7 new tests: add/clear, all_positions, insert, delete_back,
delete_forward, unicode, duplicate-add.
2026-07-05 22:29:19 +03:00
vasilito b66a9e509e policy: mark bootloader fork as PENDING_REBASE
The local bootloader fork claims to be upstream 1.0.0 + Red Bear
patches, but the patches in local/patches/bootloader/ do NOT
apply cleanly to upstream 1.0.0. The fork was originally a 0.1.0
baseline with substantial additions that pre-date the upstream-1.0.0
refactor.

Changes:

  * local/fork-upstream-map.toml: set bootloader's upstream tag to
    PENDING_REBASE. The verifier recognises this as a deliberate
    state marker (a fork whose rebase is in progress) and refuses
    the build with a clear error pointing the user to the rebase
    procedure documented in the map.

  * local/scripts/verify-fork-versions.sh: when a fork is marked
    PENDING_REBASE in the map, the script reports a dedicated error
    message instead of running the upstream content comparison (which
    would always fail for a fork in this state).

The current state of the build is:
  * 5 of 6 `-rb1` Cat 2 forks pass the no-fake-version-label
    check (redoxfs, redox-scheme, kernel, installer, userutils).
  * bootloader refuses to build until a real rebase onto a chosen
    upstream tag is completed (the patches must apply cleanly with
    --fuzz=0).
  * installer has additional divergent content that may need a
    rebase too (separate operational task).

This is the strict enforcement the user asked for. The build
cannot proceed silently with fake labels. The user must drive
the rebase work for bootloader (and installer) following the
procedure in fork-upstream-map.toml.
2026-07-05 05:15:27 +03:00
vasilito 26ecd868f7 fork: import redox-scheme 0.11.2 as tracked tree with -rb1 deps
Red Bear OS needs a local fork of redox-scheme to enforce the -rb1
version policy end-to-end. crates.io redox-scheme 0.11.2 pins
redox_syscall = "0.9.0" exactly and libredox = "0.1.18" exactly,
which Cargo refuses to satisfy with the local -rb1 forks.

The fork is implemented as a TRACKED TREE under local/sources/redox-scheme/
on the active 0.2.5 branch (per local/AGENTS.md), not as a separate
git repository or as a separate submodule on its own branch.

The single-repo rule from local/AGENTS.md is preserved: this
directory is a regular subdirectory of the RedBear-OS repo, not a
separate repository.
2026-07-04 11:05:39 +03:00
vasilito 5be1ec17b3 docs: rewrite README for public audience — highlight cub, tlc, redbear-* utilities, current status, call for contributors 2026-07-04 09:18:22 +03:00
vasilito d7273ce5cf fix: document and implement local fork version sync policy
Add comprehensive policy documentation in AGENTS.md covering:
- local/ fork always takes precedence over recipes/ paths
- build system must ensure local fork is at latest available version
- all Red Bear patches must be applied cleanly on top of latest version
- automatic version bump + patch reapplication via bump-fork.sh

Create local/scripts/bump-fork.sh that implements automatic version bumping:
- Detects current local version vs required version from Cargo.lock
- Fetches upstream source at required version
- Applies all Red Bear patches atomically
- Updates version field and replaces local fork contents

Fix driver-manager Cargo.toml lockfile collision:
- Remove redundant syscall dependency (transitive via pcid_interface)
- Update all driver recipes to use local/sources/syscall and libredox paths
- This eliminates the redox_syscall lockfile collision between
  local/sources/syscall and recipes/core/base/syscall (same dir, different paths)

relibc: fix unsafe call for Rust 2024 edition compatibility
2026-07-04 04:23:34 +03:00
vasilito 2c702465a1 fix: convert ucsid, driver-params to oneshot_async; add ipcd/ptyd overrides
Config changes to prevent scheduler hangs on live-mini ISO:
- 00_ucsid.service: scheme -> oneshot_async
- 13_driver-params.service: scheme -> oneshot_async
- 00_ipcd.service: new override (notify -> oneshot_async)
- 00_ptyd.service: new override (notify -> oneshot_async)
- 00_pcid-spawner.service: new override (oneshot -> oneshot_async)
- base: update submodule to 4bfb878 (force-run scheduler)
2026-07-04 01:07:56 +03:00
vasilito 1eed99c54f fix: change gpiod, i2cd, pcid-spawner to oneshot_async; add pcid-spawner override
All three were blocking the boot scheduler in /usr phase on live-mini
because their daemons never notify readiness without hardware present.

- 00_gpiod.service: scheme -> oneshot_async
- 00_i2cd.service: scheme -> oneshot_async
- 00_pcid-spawner.service: new override, oneshot -> oneshot_async
- base: update submodule to 4a1d1f4 (scheduler counter)
2026-07-03 10:43:31 +03:00
vasilito f47ee4fb18 fix: change blocking oneshot services to oneshot_async, add init scheduler tracing
- pcid-spawner: oneshot -> oneshot_async (blocked boot in /usr phase)
- inputd: oneshot -> oneshot_async (unnecessary blocking during initfs)
- base: update submodule to b1a6bd8 (serial debug tracing for scheduler)
- run_mini1.sh: reduce QEMU memory 12G -> 2G for faster CI testing
2026-07-03 08:56:39 +03:00
vasilito 2bed64a6c5 base: bump submodule pointer for acpid processor data readers
acpid now evaluates _CST/_PSS/_PSD/_CPC via AML interpreter and
returns formatted text for /scheme/acpi/processor/CPU{n}/<method>.
2026-07-02 23:59:18 +03:00
vasilito 5d4d3dbce1 kernel: Tier 3 — C-state tracking and CPU topology 2026-07-02 23:27:46 +03:00
vasilito f0364a4e4a kernel: fix LAPIC spurious interrupt vector 0x00 → 0xFF 2026-07-02 23:09:36 +03:00
vasilito afad19ff1a kernel: fix early-boot excp_handler panic on bare metal
Updates kernel submodule to 573b3e6 which replaces context::current()
with context::try_current() in excp_handler(), preventing the cascading
'not inside of context' panic when a page fault occurs during BSP's
start() before context::init() runs.
2026-07-02 22:34:40 +03:00
vasilito eb53e8190a redbear-power: multi-threaded collector + Tier 1/2 display enhancements
Tier 1 (display Phase 0 infrastructure):
- sched.rs: read /scheme/sys/stat and /scheme/sys/sched for per-CPU
  scheduler stats (switches, steals, queue_depth, IRQs)
- msr.rs: HWP capabilities/requests, RAPL domain energy readings
- process.rs: derive_sched_policy() for SCHED column
- render.rs: System tab shows RAPL power, scheduler stats; Per-CPU
  table has IRQs/steals columns; HWP expansion rows
- acpi.rs: ACPI throttle status reading

Multi-threaded collector (exercises Phase 0 threading):
- collector.rs: parallel collect() using thread::scope + Barrier,
  exercises pthread_create, futex barriers, sched_setaffinity
- app.rs: sequential per-CPU loop replaced with parallel collector
- render.rs: System tab shows Collector stats (threads, pinned, barrier)

Tier 2 kernel wiring (submodule pointer updates):
- kernel: per-CPU sched stats (/scheme/sys/sched), NUMA-aware
  scheduling, numa::init_default() at boot
- relibc: robust mutex cleanup in exit_current_thread()
2026-07-02 21:41:25 +03:00
vasilito f988cc0d58 feat: redbear-mini boots to login prompt with Phase 0 threading patches
Kernel (local/sources/kernel):
- Per-CPU idle context race fix (try_idle_context)
- Pinned to nightly-2026-04-11
- Futex sharding, cache-affine context, per-CPU scheduler
- NUMA topology, proc lock ordering, sched policy handles
- ACPI FADT type fix

relibc (local/sources/relibc):
- Non-robust mutex ENOTRECOVERABLE false positive fix
- pthread_cond_signal POSIX fix
- Pthread yield, barrier SMP futex, robust mutexes
- sched API, comprehensive semaphore, pthread affinity+setname
- stdint.h in sched.h cbindgen

Boot verified: UEFI -> kernel -> init -> drivers -> services -> login prompt
All Red Bear init stages pass (02->04->06->08)
xhcid no longer crashes, D-Bus services online
2026-07-02 17:13:06 +03:00
vasilito 327aed1e5d git: bump submodule/kernel for cargo -Zunstable-options 2026-07-02 14:22:35 +03:00
vasilito 7fdf828c75 git: bump submodule/kernel for Cargo.lock refresh 2026-07-02 13:43:15 +03:00
vasilito cd3950072e git: bump submodule/base for acpid comment fix 2026-07-02 12:47:15 +03:00
vasilito 1baa769241 git: bump submodule/base for acpid brace fix 2026-07-02 11:37:58 +03:00
vasilito a998484765 git: bump submodule/libredox for default features fix 2026-07-02 11:09:44 +03:00
vasilito af21591a98 git: bump submodule/libredox for Cargo.toml regen 2026-07-02 10:59:47 +03:00
vasilito 32a217f9e5 git: bump submodule/kernel for proc path fix 2026-07-02 10:53:53 +03:00
vasilito a53946aecf git: bump submodule/kernel for scheduler deadlock fix 2026-07-02 10:36:18 +03:00
vasilito 27bb5e3f0e git: bump submodule/relibc for [u64; 2] affinity mask 2026-07-02 10:30:50 +03:00
vasilito b8fbb8bfc5 git: bump submodule/relibc for robust_list_head init + null guard 2026-07-02 10:22:30 +03:00
vasilito 14913dc6f3 git: bump submodule/kernel for nice mapping fix 2026-07-02 10:19:09 +03:00
vasilito 1d34a67dd3 git: bump submodule/libredox for non-optional redox_syscall dep 2026-07-02 08:25:52 +03:00
vasilito ff05c9f596 git: bump submodule/relibc for unused import removal 2026-07-02 08:15:21 +03:00
vasilito 44e6665a4a git: bump submodule/relibc for Sys::open/close Result handling 2026-07-02 07:57:52 +03:00
vasilito fb827fad85 git: bump submodule/relibc for Sys::open NulStr fixes 2026-07-02 07:55:29 +03:00
vasilito 3d2392eb2e git: bump submodule/libredox to 0.1.18 with Phase J acpi module 2026-07-02 07:55:05 +03:00
vasilito e524350cf3 git: bump submodule/relibc for PthreadFlags + robust_list_head + comprehensive semaphores 2026-07-02 07:45:31 +03:00
vasilito 34a11d845b git: bump submodule/relibc for Phase 0e progress
The relibc fork just gained 8 commits:
  - P3-pthread-yield (sched_yield via proc scheme)
  - P3-barrier-smp-futex (SMP-safe barrier)
  - P5-robust-mutexes (robust mutex implementation)
  - P5-sched-api (replaces todo!() in sched_* functions)
  - P3-threads (C11 <threads.h>)
  - P7-pthread-affinity + P7-pthread-setname (manual surgical,
    including cpu_set_t struct, sched-affinity proc scheme handle,
    sched C-export, setname/getname_np)
  - P3-semaphore-comprehensive (POSIX semaphores)
  - P5-signal-handler-panic-hardening
  - P3-semaphore-varargs-header
  - P5-robust-mutex-enotrec-fix (ENOTRECOVERABLE handling)

Combined with the previous pthread_cond_signal POSIX fix, relibc
now provides:
  - sched_getscheduler/setscheduler/getparam/setparam (real impls)
  - pthread_setaffinity_np/getaffinity_np
  - pthread_setname_np/getname_np
  - pthread_setcancelstate/setcanceltype (already worked)
  - C11 <threads.h>
  - POSIX semaphores (sem_init, sem_wait, sem_post, etc.)
  - SMP-safe barrier
  - Robust mutex infrastructure (pending kernel FUTEX_OWNER_DIED
    for full functionality)

Phase 0e is ~70% complete on the relibc side. Remaining 6 patches
need 3-way rebase or manual surgical edits.

Phase 1 (FUTEX_REQUEUE/PI/robust) is now a logical follow-on: the
relibc infrastructure is in place to use them when the kernel
futex layer is extended.
2026-07-02 07:13:42 +03:00
vasilito f495587972 git: bump submodule/kernel for Phase 0c completion
The local kernel fork just gained 3 commits:
  - add Context::set_sched_policy and set_sched_other_prio
  - acpi/fadt: fix pre-existing usize/u32 type mismatch on x86_64
  - add SchedPolicy/Name/Priority proc scheme handles

After these, the local kernel fork:
  - Has 13 of the 18 P5-P9 plan patches re-applied (3 obsolete by
    refactor, 1 misnamed, 1 already in fork from P4)
  - cargo check exits 0 with 0 errors
  - Provides userspace API for pthread_setname_np, sched_setscheduler,
    and setpriority via /proc/<tid>/{name, sched-policy, priority}
  - Fixes a long-standing pre-existing ACPI FADT type mismatch

Phase 0c (patch recovery) is functionally complete for the kernel
side. Remaining P5-P9 work is in relibc fork (P3/P5/P7/P9 threading
patches) which is a separate, more self-contained effort.
2026-07-02 07:00:24 +03:00
vasilito 8e98ae1270 git: bump submodule/kernel for Phase 0c placement + NUMA + lock order 2026-07-02 06:43:25 +03:00
vasilito bb6d2ad95e git: bump submodule/kernel for Phase 0c per-CPU run queue wiring 2026-07-02 06:42:24 +03:00
vasilito c52cec97cd git: bump submodule/kernel for Phase 0c start (P6-futex-sharding + RUN_QUEUE_COUNT)
The local kernel fork just gained two commits:
  - P6-futex-sharding: replaces single global Mutex<L1, FutexList> with
    64-shard hash table, eliminating contention between futex operations
    on different addresses.
  - RUN_QUEUE_COUNT: pre-flight constant at context::RUN_QUEUE_COUNT = 40
    that downstream patches (P8-percpu-sched, P8-percpu-wiring) need but
    none of the existing P5–P9 patches define.

Phase 0c, plan orders #1 and pre-flight.
2026-07-02 06:33:28 +03:00
vasilito 768010de46 git: bump submodule/relibc for pthread_cond_signal POSIX fix
The relibc fork at local/sources/relibc just gained a one-line
correctness fix for pthread_cond_signal (was calling broadcast() which
wakes all waiters; POSIX requires wake exactly one). The fix was
committed to the fork as 6caad3a5 and pushed to the submodule/relibc
branch on the canonical RedBear-OS repo.

This parent-repo commit updates the gitlink so a fresh clone picks
up the new relibc fork HEAD.

First execution of the multi-threading plan (Phase 0a).
2026-07-02 06:23:40 +03:00
vasilito c120c3519f git: restore clean submodule tracking and add libredox fork
The working tree had accumulated git-tracking drift across the
local/sources, local/recipes/*/source, and local/reference trees.

Restored:
  - local/sources/libredox: add missing 160000 gitlink at
    d01da350 (submodule/libredox). The .gitmodules entry already
    declared this fork; the parent tree entry was missing so a
    fresh clone of the parent would not pull the libredox source.
  - .gitignore: mark the four local/recipes/*/source build-cache
    trees (uutils-tar, ninja-build, sddm, sddm/source-pristine)
    and the two local/reference/* entries (linux-7.1, seL4) as
    ignored. These are build caches and external references, not
    durable Red Bear code. The durable code for the four recipes
    is recipe.toml + the corresponding patch (redox.patch).
  - Note in .gitignore: do not extend local/recipes/**/source to
    a blanket rule, because ~150 Red Bear fork recipes do keep
    their durable source under local/recipes/<name>/source/.

Removed six broken 160000 gitlinks:
  - local/recipes/archives/uutils-tar/source (e4c2affa...): on-disk
    working tree was a self-clone of RedBear-OS; gitlink pointed to
    a non-existent commit in the parent object database.
  - local/recipes/dev/ninja-build/source (d829f42b...): gitlink
    was a dangling commit on a diverged branch that has since been
    rewritten; the on-disk HEAD is upstream v1.13.1 (79feac0) which
    the recipe re-fetches via recipe.toml anyway. The 6.4MB
    embedded .git directory was also removed.
  - local/recipes/kde/sddm/source (63780fcd...): build cache for
    sddm 0.21.0 re-fetched via recipe.toml. The 11MB embedded
    .git directory was also removed.
  - local/recipes/kde/sddm/source-pristine (63780fcd...): empty
    placeholder, build cache. Removed.
  - local/reference/linux-7.1 (ab9de95c...): external Linux
    reference tree, gitignored by size. The on-disk directory
    is preserved per AGENTS.md 'NEVER delete the reference tree'.
  - local/reference/seL4 (a0b4f2d2...): empty placeholder,
    gitignored.

Removed untracked pollution at repo root:
  - kernel (empty 0-byte file)
  - qqmljsgrammar.cpp, qqmljsgrammar_p.h, qqmljsparser.cpp,
    qqmljsparser_p.h (393KB total: build artifacts that escaped
    a qtdeclarative build into the working tree root; they belong
    inside the recipe source tree, not at the parent level)

Added:
  - local/docs/MULTITHREADING-COMPREHENSIVE-ASSESSMENT-AND-PLAN.md:
    comprehensive multi-threading audit and implementation plan
    covering kernel scheduler, kernel futex, syscall ABI, relibc
    pthreads, and userspace threading correctness. Will drive
    the next implementation cycle after the git tracking work
    is wrapped.

After this commit:
  - 9 submodule entries in HEAD, all of local/sources/* forks.
  - All previously-existing 8 fork submodules unchanged.
  - libredox is now durable across clones (was previously lost).
  - No untracked files at root.
  - No dangling or self-referencing gitlinks.
2026-07-02 06:04:52 +03:00
vasilito a3a4d4cde9 gitmodules: declare remaining submodules against canonical RedBear-OS
Adds .gitmodules entries for local/sources/{base,bootloader,installer,
libredox,redoxfs,relibc,syscall,userutils} — all pointing at
https://gitea.redbearos.org/vasilito/RedBear-OS.git with
branch = submodule/<name>. Previously only 'kernel' was declared.

After this commit, a fresh clone followed by
'git submodule update --init --recursive' resolves all 9 component
sources from the canonical RedBear-OS repo's submodule/<name>
branches.

Removes the dangling gitlinks for the 4 components whose per-component
Gitea repos were empty (0 commits): local/sources/ctrlc,
local/sources/libpciaccess, local/sources/redox-drm, local/sources/sysinfo.
These were cleaned because the upstream per-component repo had no source
content; if any of these components is revived in the future, declare
a new 'submodule/<name>' branch on RedBear-OS and re-add the .gitmodules
entry.

Updates local/AGENTS.md § Migration status to reflect the completed state.
2026-07-01 22:03:57 +03:00