base: revert oneshot_async service types, fix local fork deps, migrate remote to RedBear-OS
- Revert initfs/rootfs service types from oneshot_async to blocking Scheme/Notify/Oneshot to fix init ordering races. - Add /scheme/pci retry loop in pcid-spawner. - Bump redox_event to 0.4.8; use local paths for redox-ioctl and redox-rt. - Regenerate Cargo.lock / bootstrap/Cargo.lock with only local forks. - Update submodule origin from redbear-os-base.git to RedBear-OS.git branch submodule/base per single-repo policy.
This commit is contained in:
@@ -1,11 +1,30 @@
|
||||
use std::fs;
|
||||
use std::process::Command;
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
|
||||
use pcid_interface::config::Config;
|
||||
use pcid_interface::PciFunctionHandle;
|
||||
|
||||
fn wait_for_pci_scheme() -> Result<()> {
|
||||
let mut last_err = None;
|
||||
for i in 0..40 {
|
||||
match fs::read_dir("/scheme/pci") {
|
||||
Ok(_) => return Ok(()),
|
||||
Err(err) => {
|
||||
last_err = Some(err);
|
||||
if i == 0 {
|
||||
log::debug!("pcid-spawner: waiting for /scheme/pci to become available");
|
||||
}
|
||||
thread::sleep(Duration::from_millis(50));
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(last_err.unwrap().into())
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let mut args = pico_args::Arguments::from_env();
|
||||
let initfs = args.contains("--initfs");
|
||||
@@ -31,6 +50,8 @@ fn main() -> Result<()> {
|
||||
|
||||
let config: Config = toml::from_str(&config_data)?;
|
||||
|
||||
wait_for_pci_scheme().context("/scheme/pci is not available")?;
|
||||
|
||||
for entry in fs::read_dir("/scheme/pci")? {
|
||||
let entry = entry.context("failed to get entry")?;
|
||||
let device_path = entry.path();
|
||||
@@ -94,7 +115,7 @@ fn main() -> Result<()> {
|
||||
|
||||
#[allow(deprecated, reason = "we can't yet move this to init")]
|
||||
daemon::Daemon::spawn(command);
|
||||
syscall::close(channel_fd as usize).unwrap();
|
||||
libredox::call::close(channel_fd as usize).unwrap();
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user