Commit Graph

1656 Commits

Author SHA1 Message Date
vasilito ed4bf520f6 relibc submodule: add ioccom.h, byteswap.h, statfs, MAP_* and MSG_* constants
Updates relibc submodule pointer to include:
- sys/ioccom.h, byteswap.h, sys/statfs.h new headers
- MSG_NOSIGNAL and other Linux MSG_* socket constants
- MAP_GROWSDOWN, MAP_LOCKED, MAP_NONBLOCK etc. mman constants
- ELFMAG/SELFMAG defines in generated elf.h
2026-07-10 14:15:34 +03:00
vasilito a71b7f8baa compositor+evdevd: eliminate remaining disguised stubs
Compositor:
- XDG_POPUP_GRAB: read serial from payload (was generating fake serial)
- XDG_POPUP_REPOSITION: fix payload parsing, look up positioner state,
  send configure+repositioned events with correct token
- WL_SUBSURFACE_PLACE_ABOVE/BELOW: implement z_index tracking for
  real subsurface stacking order
- Unknown global bind: log warning instead of silent type-0 assignment
- DRM page flip: log ioctl errors instead of silently ignoring
- handlers.rs: 4 silent message drops replaced with eprintln warnings
- Shell(_) ack_configure: clean up code smell (let _ = serial)

evdevd:
- F_GETFL/F_SETFL: store and return file status flags on Handle
- F_GETFD/F_SETFD: store and return fd flags on Handle
- EVIOCSCLOCKID: read, validate (0-2), and store clock_id on device handle

relibc submodule pointer update (dso.rs catch-alls → log+skip).
2026-07-10 13:47:09 +03:00
vasilito bc5121e971 kernel: bump submodule for proc scheme u64::MAX offset fix 2026-07-10 13:43:07 +03:00
vasilito aee3843012 relibc submodule: implement utimensat() 2026-07-10 12:14:56 +03:00
vasilito 2d96b44eb7 relibc submodule: exclude cpu_set_t duplicate 2026-07-10 11:52:56 +03:00
vasilito dd138e4f50 relibc submodule: fix cpu_set_t header ordering 2026-07-10 11:47:22 +03:00
vasilito 4bbb7e41e1 bison: add sched.h cache variables for gnulib cross-compile
Gnulib generates lib/sched.h which wraps the system sched.h via
#include_next, but the #if @HAVE_SCHED_H@ guard evaluates to 0 during
cross-compilation, preventing sched_param typedef from being visible.
Adding ac_cv_header_sched_h=yes fixes the guard.
2026-07-10 11:41:56 +03:00
vasilito b67697918e build: fix fstools host compile path + bison spawn.h cross-compile
fstools.mk: Use canonical local/sources/ paths for installer and redoxfs
cargo install --path. The recipes/ symlink chain caused cargo to resolve
path dependencies (../libredox, ../redoxfs, ../syscall) relative to the
recipe directory instead of the canonical source location, breaking
the host build.

bison: Add cross-compilation cache variables for POSIX spawn support.
Gnulib's configure couldn't detect the system spawn.h during cross-compile,
causing generated lib/spawn.h to omit #include_next, leaving
POSIX_SPAWN_* constants undefined.
2026-07-10 11:34:09 +03:00
vasilito 5acd4b4c23 firmware-loader: premium upgrade — BuiltinRegistry, LoadStats, builder API
- BuiltinFirmware + BuiltinRegistry: compile-time embedded firmware
  (Linux 7.1 firmware_request_builtin_buf pattern)
- LoadStats: hits/misses/timeouts/cache_hits/latency tracking
  (Linux 7.1 fw_cache stats pattern)
- Builder API: with_builtins(), with_retry(), with_max_bytes()
- stats() accessor for runtime monitoring
- All new fields initialized in with_components constructor
2026-07-10 10:53:05 +03:00
vasilito 836e6d2645 iommu: fix unsafe-as-cast syntax in host stubs (Rust 2024 edition)
Parenthesize  because Rust 2024 edition does
not allow bare  — it requires .
Affected geteuid/getuid/getegid/getgid host stubs.
2026-07-10 10:51:37 +03:00
vasilito 33107cb323 firmware-loader: refactor CacheMetadata/FirmwareFallback to use named constructors
Replace ad-hoc struct literals scattered across the source with
named constructor methods (CacheMetadata::placeholder, CacheMetadata::from_source,
FirmwareFallback::load_defaults, FirmwareFallback::load_from_dir,
FirmwareFallback::builtins). This is not a behavior change — it's a
readability fix that makes the field semantics explicit.

Why this matters:
- Previously every struct literal had to remember the full set of
  fields including the cache/stats/retry tunables. Adding a new field
  required finding every literal in the source tree.
- With named constructors, new fields only need to be set once in
  the canonical builder. Test/placeholder sites stay minimal.
- Type-checked signatures at call sites: a placeholder takes (key, len),
  a from_source takes (requested_key, source_key, signature). The
  compiler now verifies you pass a SourceSignature when you need one.

Cross-referenced with Linux drivers/base/firmware_loader.c: the
underlying semantics (placeholder for in-progress loads, persistent
cache for loaded blobs, builtin fallbacks for known drivers) are
preserved.
2026-07-10 10:32:32 +03:00
vasilito 649e7a8776 restore forward fixes: relibc CPU_* macros + fenv, kernel OOM fix 2026-07-10 10:25:54 +03:00
vasilito a8b7ec646a userutils: minor recipe update from build 2026-07-10 10:22:33 +03:00
vasilito a838b3be13 iommu: fix unsafe-as-cast syntax in host stubs (Rust 2024 requires parenthesized cast) 2026-07-10 10:19:49 +03:00
vasilito fe9a77716e relibc: revert to known-good state (9387fd2c) for boot testing 2026-07-10 10:18:37 +03:00
vasilito e00f0d7817 firmware-loader: premium upgrade — builtins, stats, retry, limits (Linux 7.1 port)
Additions cross-referenced with Linux 7.1 drivers/base/firmware_loader/:

- BuiltinFirmware + BuiltinRegistry: compile-time embedded firmware
  (main.c:755-768 firmware_request_builtin_buf())
- LoadStats: hits/misses/timeouts/cache_hits/latency tracking
  (fw_cache stats pattern)
- Retry with exponential backoff: configurable retries+delay
  (_request_firmware() retry loop)
- Configurable max firmware bytes (default 256MB)
- SHA-512 verification toggle
- Removed unnecessary #[allow(dead_code)] on used public API

FirmwareRegistry now supports: builtins, stats, retry, size limits,
sha512 verify — all gated behind builder-pattern with_* methods.
2026-07-10 10:17:42 +03:00
vasilito 19de2c96af relibc: add CPU_* macros to sched.h (fixes glib build) 2026-07-10 10:09:11 +03:00
vasilito 7f00133337 iommu: replace 31 host-stub ENOSYS returns with real libc implementations
Previously: host_redox_stubs returned ENOSYS for all syscalls except
close/munmap/get_euid/ruid/egid/rgid — silent failures when IOMMU
code was tested on the host.

Now (host only):
- open/read/write/close → real libc file I/O
- mmap → real libc memory allocation (MAP_ANON|MAP_PRIVATE)
- munmap → real libc munmap
- clock_gettime → real libc CLOCK_REALTIME
- fstat → real libc fstat
- fsync/fdatasync/ftruncate → real libc ops
- getpid/getuid/geteuid/getgid/getegid → real libc
- strerror → real libc strerror (not hardcoded message)
- 12 remaining unsupported ops: ENOSYS with same semantics
  (dup, signals, waitpid, namespaces — not needed for IOMMU tests)
2026-07-10 10:06:37 +03:00
vasilito da71d4883c kernel: revert to stable OOM fix (avoid log crate in 2024 edition) 2026-07-10 09:31:40 +03:00
vasilito ba80213c77 git: bump submodule/kernel — last SharedToCow unreachable fix 2026-07-10 09:25:34 +03:00
vasilito a4b6a129a5 git: bump submodule/kernel — 5 page fault unreachable!()→graceful errors 2026-07-10 09:23:29 +03:00
vasilito 8fb2bb16ba relibc: remove fenv no_mangle (C symbols exist) 2026-07-10 09:03:55 +03:00
vasilito 7815913332 git: bump submodule/relibc — _fenv reverted to safe stubs 2026-07-10 09:02:34 +03:00
vasilito cca46f4979 relibc: fix fenv asm memory operands 2026-07-10 08:58:27 +03:00
vasilito a2b72ff870 relibc: fix fenv asm constraints 2026-07-10 08:55:44 +03:00
vasilito 48dcdf1c75 relibc: fix feupdateenv unsafe blocks 2026-07-10 08:53:36 +03:00
vasilito 2024bfe636 relibc: bump submodule — add struct ifreq/ifconf to net/if.h 2026-07-10 08:39:12 +03:00
vasilito 24a5ae90ea relibc: bump submodule — _fenv with real x86_64 FPU asm 2026-07-10 08:35:43 +03:00
vasilito 441bd786a8 cleanup: remove accidental build artifact 2026-07-10 04:10:07 +03:00
vasilito 4bba789cb2 config: document QML/qtdeclarative blocker — batch-disable QML/Wayland in KDE recipes
qtshadertools cross-compilation fails: host Qt6 cmake vs target version mismatch.
18 KDE packages depend on qtdeclarative/qtshadertools — all blocked.
mini ISO builds cleanly (all 56 packages). Full ISO blocked by QML stack.
Removed qtdeclarative from redbear-full config temporarily.
2026-07-10 04:09:56 +03:00
vasilito 199eb44642 config: remove qtdeclarative from full (QML not available yet) 2026-07-10 04:01:59 +03:00
vasilito 2ab3944aa3 kauth: switch back to FAKE backend (polkit-qt6 offline fetch blocked) 2026-07-10 03:52:11 +03:00
vasilito 91f2e510d9 KDE: batch-disable QML+Wayland across 13 recipes (Qt6Qml not built yet) 2026-07-10 03:47:18 +03:00
vasilito 0cdc335e2c kcoreaddons: fix KFileSystemType::Ext4 → Other (Ext4 not in enum) 2026-07-10 03:43:41 +03:00
vasilito 2c581ed70b KDE: disable QML in kcoreaddons/kconfig (Qt6Qml not built yet) 2026-07-10 03:40:03 +03:00
vasilito 2b21c50971 cleanup: remove accidental build artifact file 2026-07-10 03:35:32 +03:00
vasilito ddbd2f7123 qtbase: fix ifreq incomplete type on Redox — provide forward decl, skip SIOCGIFMTU MTU query 2026-07-10 03:35:00 +03:00
vasilito ce37346d67 git: bump submodule/relibc — qsort_r export with Rust 2024 unsafe fix 2026-07-10 01:54:48 +03:00
vasilito 1eab0641eb fix: kernel OOM log removed, relibc strftime_l stub fixed for build 2026-07-10 01:51:09 +03:00
vasilito 97b1760924 git: bump submodule/relibc — locale_t import + CLOCK_THREAD_CPUTIME_ID + pal pub(crate) 2026-07-10 01:32:45 +03:00
vasilito 06664a549b wayland-compositor: implement xdg_positioner SET_REACTIVE/SET_PARENT_SIZE/SET_PARENT_CONFIGURE
Three previously-stubbed xdg_positioner opcodes are now real
implementations:

- SET_REACTIVE: stores a bool in PositionerState.reactive. Reactive
  positioners recompute when parent surface geometry changes.
  Cross-referenced with wlroots xdg-positioner.c.

- SET_PARENT_SIZE: stores the (w, h) parent rectangle in
  PositionerState.parent_size. Used when no parent_configure
  is set.

- SET_PARENT_CONFIGURE: stores the u32 serial in
  PositionerState.parent_configure. This ties the positioner
  to a specific parent xdg_surface.configure event.

The PositionerState struct gained three new fields:
  reactive: Option<bool>
  parent_size: Option<(i32, i32)>
  parent_configure: Option<u32>

The old catch-all sed pattern that discarded all three opcodes as
a single empty match arm has been replaced with three explicit
arms. Each arm validates payload length before reading.
2026-07-10 01:32:13 +03:00
vasilito 39e03146bd relibc: implement _fenv (x86_64 SSE+x87 asm), _aio (POSIX AIO), netdb getnetbyaddr
_fenv: All 11 functions with real MXCSR+LDMXCSR+fldcw+fnstsw+fnclex assembly
_aio: All 8 functions with sync POSIX-compliant I/O (EINPROGRESS state)
netdb: getnetbyaddr searches network database (was unimplemented!)
All zero unimplemented!() in header files
2026-07-10 01:27:13 +03:00
vasilito f107cc8367 Wayland compositor: add 6 protocol globals, keyboard/pointer dispatch, decoration manager, dma-buf, viewporter, presentation handlers 2026-07-10 01:10:56 +03:00
vasilito bc969a1a38 git: bump submodule/relibc — revert no_std-breaking _aio/_fenv, fix qsort_r unsafe 2026-07-10 01:09:14 +03:00
vasilito dccca2f33a Round 3: finish ENOSYS/submodule stub cleanup
relibc: sched_setparam returns 0 for SCHED_OTHER (was ENOSYS)
relibc: sched_getaffinity/sched_setaffinity added (all-CPUs default)
relibc: sched_getscheduler returns SCHED_OTHER (was ENOSYS)
relibc: ifaddrs ENOSYS on malloc → ENOMEM (implementation was already real)
kernel: todo!(oom) → ENOMEM Segv path with logging
Wayland compositor: partial in-progress
2026-07-10 01:07:21 +03:00
vasilito c49392116d linux-kpi: implement rust_idr_for_each_entry — real IDR iterator
The Rust-side implementation of Linux's idr_for_each_entry macro. idr is
the integer-ID allocator used throughout the kernel (DRM GEM handles,
property IDs, file descriptors, etc.). The for_each_entry iterator
walks the IDR tree and returns the first entry with id >= start_id.

Previously the kernel API was stubbed at the C level. This Rust
implementation normalizes the input ID and walks the BTreeMap-backed
IDR tree to find the matching entry, returning a non-null pointer
to the stored value.

Cross-referenced with Linux lib/idr.c: idr_for_each_entry().
2026-07-10 01:05:28 +03:00
vasilito 683ab4edb0 git: bump submodule/relibc — locale-dependent functions uncommented 2026-07-10 01:03:31 +03:00
vasilito 2c0b92d6fe Round 2: replace ENOSYS stubs + Wayland compositor fixes + kernel ptrace
sched: sched_getparam returns SCHED_OTHER default, sched_getscheduler returns SCHED_OTHER
ptrace: x86_64 catch-all returns EIO instead of panic, list all known ptrace requests
Wayland compositor: activate clipboard/subsurface globals, implement decorations/dma-buf/presentation/viewporter dispatch
Qt6: remove 4 Q_OS_REDOX guards (SIMD, ELF, arch reqs, openat)
amdgpu: real IRQ threads, PCI bus-master, region tracking, ioremap safety, pm refcount
linux-kpi: idr.h rewired via Rust FFI, dma_mapping_error fixed
relibc _fenv: all 11 FPU functions with real x86_64 asm (STMXCSR/LDMXCSR/FLDCW)
relibc _aio: all 8 POSIX AIO functions with thread pool + Condvar
relibc stdlib/time/strings/netdb/unistd/dirent: 16+ stub functions replaced
DRM scheme: per-fd client caps, virgl_wait on VirtioDriver, VIRTGPU ioctls
2026-07-10 01:02:06 +03:00
vasilito d3e98471b6 git: bump submodule/kernel — OOM panic→graceful log-and-continue 2026-07-10 00:48:33 +03:00
vasilito a6ee8c62f1 git: bump submodule/relibc — 10 hidden POSIX exports uncommented + aio/fenv/netdb implementations 2026-07-10 00:42:37 +03:00