Update redox-initfs and use the initfs_size header field instead of INITFS_LENGTH

This commit is contained in:
bjorn3
2024-03-12 21:49:53 +01:00
parent b50d6fad52
commit 70700df944
3 changed files with 5 additions and 20 deletions
Generated
+1 -1
View File
@@ -104,7 +104,7 @@ dependencies = [
[[package]]
name = "redox-initfs"
version = "0.1.0"
source = "git+https://gitlab.redox-os.org/redox-os/redox-initfs.git#89b8fb8984cf96c418880b7dcd9ce3d6afc3f71c"
source = "git+https://gitlab.redox-os.org/redox-os/redox-initfs.git#7dd9b2e84d983a444518218f3ec74d3e9ac900b3"
dependencies = [
"plain",
]
+1 -1
View File
@@ -12,7 +12,7 @@ crate-type = ["staticlib"]
[dependencies]
hashbrown = { version = "0.14", default-features = false, features = ["inline-more"] }
linked_list_allocator = "0.10"
redox-initfs = { git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git", features = ["kernel"], default-features = false }
redox-initfs = { git = "https://gitlab.redox-os.org/redox-os/redox-initfs.git", default-features = false }
redox-exec = { git = "https://gitlab.redox-os.org/redox-os/relibc.git" }
redox_syscall = "0.4"
+3 -18
View File
@@ -7,8 +7,6 @@ use syscall::flag::{O_CLOEXEC, O_RDONLY};
use redox_exec::*;
pub fn main() -> ! {
let initfs_length;
let envs = {
let mut env = [0_u8; 4096];
@@ -23,21 +21,6 @@ pub fn main() -> ! {
let raw_iter = || env.split(|c| *c == b'\n').filter(|var| !var.is_empty());
let mut initfs_length_opt = None;
for var in raw_iter() {
let equal_sign = var.iter().position(|c| *c == b'=').expect("malformed environment variable");
let name = &var[..equal_sign];
let value = &var[equal_sign + 1..];
match name {
b"INITFS_LENGTH" => initfs_length_opt = core::str::from_utf8(value).ok().and_then(|s| usize::from_str_radix(s, 16).ok()),
_ => continue,
}
}
initfs_length = initfs_length_opt.expect("missing INITFS_LENGTH");
let iter = || raw_iter().filter(|var| !var.starts_with(b"INITFS_"));
iter().map(|var| var.to_owned()).collect::<Vec<_>>()
@@ -48,10 +31,12 @@ pub fn main() -> ! {
static __initfs_header: u8;
}
let initfs_length = unsafe { (*(core::ptr::addr_of!(__initfs_header) as *const redox_initfs::types::Header)).initfs_size };
unsafe {
// Creating a reference to NULL is UB. Mask the UB for now using black_box.
// FIXME use a raw pointer and inline asm for reading instead for the initfs header.
spawn_initfs(core::ptr::addr_of!(__initfs_header), initfs_length);
spawn_initfs(core::ptr::addr_of!(__initfs_header), initfs_length.get() as usize);
}
const CWD: &[u8] = b"/scheme/initfs";
let extrainfo = redox_exec::ExtraInfo {