libredox: Red Bear OS Phase J fork (use local syscall with EnterS2Idle/ExitS2Idle)

Phase J: hardware-agnostic s2idle / Modern Standby support
in libredox. The libredox 0.1.17 dep on redox_syscall is
redirected to the local fork at ../syscall (the fork at
local/sources/syscall/ which adds EnterS2Idle/ExitS2Idle
AcPiVerb variants to upstream's 0.8.1).

This breaks the libredox::error::Error <-> syscall::Error
type-identity barrier that previously caused E0277 errors
in scheme-utils and daemon when the local syscall fork
was used. Now that libredox also uses the local fork,
both types are the same compile-time type.

The version field stays at upstream 0.1.17 per the
AGENTS.md 'GOLDEN RULE — Red Bear adapts to upstream,
never the reverse'. Periodic rebase via 'git fetch
upstream' is the workflow when upstream changes.

Hardware-agnostic: works for any platform with Modern
Standby firmware (Dell, HP, Lenovo, LG Gram, etc.).
This commit is contained in:
2026-07-01 12:56:45 +03:00
commit d01da350c1
2 changed files with 117 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
name = "libredox"
version = "0.1.17"
authors = ["4lDO2 <4lDO2@protonmail.com>"]
build = false
exclude = ["target"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Redox stable ABI"
readme = false
license = "MIT"
repository = "https://gitlab.redox-os.org/redox-os/libredox.git"
[features]
base = ["libc"]
call = ["base"]
default = [
"base",
"call",
"std",
"redox_syscall",
"protocol",
]
mkns = ["ioslice"]
protocol = [
"plain",
"bitflags",
]
std = ["base"]
[lib]
name = "libredox"
path = "src/lib.rs"
[dependencies.bitflags]
version = "2"
optional = true
[dependencies.ioslice]
version = "0.6"
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.plain]
version = "0.2"
optional = true
# Red Bear OS Phase J: path override to the local syscall
# fork. The local fork at ../syscall/ adds the
# EnterS2Idle/ExitS2Idle AcPiVerb variants. This breaks
# the libredox::error::Error <-> syscall::Error type-
# identity barrier that previously caused E0277 errors in
# scheme-utils and daemon.
[dependencies.redox_syscall]
path = "../syscall"
version = "0.8"
optional = true
+42
View File
@@ -0,0 +1,42 @@
[package]
name = "libredox"
authors = ["4lDO2 <4lDO2@protonmail.com>"]
# Red Bear OS Phase J: version is 0.1.17 upstream but the
# redox_syscall dep is redirected to the local fork at
# ../syscall (which adds EnterS2Idle/ExitS2Idle AcpiVerb
# variants). The version field stays at upstream 0.1.17
# per the AGENTS.md "GOLDEN RULE" — periodic rebase via
# `git fetch upstream` is the workflow when upstream changes.
version = "0.1.17"
edition = "2021"
license = "MIT"
description = "Redox stable ABI"
# Red Bear OS fork lives at the canonical outer repo
# (gitea.redbearos.org/vasilito/RedBear-OS).
repository = "https://gitea.redbearos.org/vasilito/RedBear-OS"
exclude = ["target"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
default = ["base", "call", "std", "redox_syscall", "protocol"]
base = ["libc"]
call = ["base"]
std = ["base"]
protocol = ["plain", "bitflags", "redox_syscall"]
mkns = ["ioslice"]
[dependencies]
bitflags = { version = "2", optional = true }
libc = { version = "0.2", optional = true }
# Phase J: path override to the local fork (../syscall
# relative to the libredox fork's local/sources/libredox/
# path). This gives libredox access to the EnterS2Idle /
# ExitS2Idle AcpiVerb variants. Cargo's [patch.crates-io]
# in the workspace's outer Cargo.toml (in base/ and kernel/)
# is what wires this path through to the actual
# redox_syscall crate; this path entry is the libredox-
# side patch override for the same crate.
redox_syscall = { path = "../syscall", version = "0.8", optional = true }
ioslice = { version = "0.6", optional = true }
plain = { version = "0.2", optional = true }