Add ided stub

This commit is contained in:
Jeremy Soller
2022-09-07 12:16:16 -06:00
parent e2a8255547
commit 41217ad6fa
6 changed files with 95 additions and 0 deletions
Generated
+11
View File
@@ -441,6 +441,17 @@ dependencies = [
"libc",
]
[[package]]
name = "ided"
version = "0.1.0"
dependencies = [
"log",
"pcid",
"redox-daemon",
"redox-log",
"redox_syscall 0.3.4",
]
[[package]]
name = "idna"
version = "0.1.5"
+1
View File
@@ -6,6 +6,7 @@ members = [
"bgad",
"block-io-wrapper",
"e1000d",
"ided",
"ihdad",
"ixgbed",
"nvmed",
+1
View File
@@ -0,0 +1 @@
/target
+11
View File
@@ -0,0 +1,11 @@
[package]
name = "ided"
version = "0.1.0"
edition = "2018"
[dependencies]
log = "0.4"
pcid = { path = "../pcid" }
redox-daemon = "0.1"
redox-log = "0.1"
redox_syscall = "0.3"
+63
View File
@@ -0,0 +1,63 @@
use pcid_interface::PcidServerHandle;
use log::{error, info};
use redox_log::{OutputBuilder, RedoxLogger};
fn setup_logging() -> Option<&'static RedoxLogger> {
let mut logger = RedoxLogger::new()
.with_output(
OutputBuilder::stderr()
.with_filter(log::LevelFilter::Info) // limit global output to important info
.with_ansi_escape_codes()
.flush_on_newline(true)
.build()
);
#[cfg(target_os = "redox")]
match OutputBuilder::in_redox_logging_scheme("disk", "pcie", "ide.log") {
Ok(b) => logger = logger.with_output(
// TODO: Add a configuration file for this
b.with_filter(log::LevelFilter::Info)
.flush_on_newline(true)
.build()
),
Err(error) => eprintln!("ided: failed to create ide.log: {}", error),
}
#[cfg(target_os = "redox")]
match OutputBuilder::in_redox_logging_scheme("disk", "pcie", "ide.ansi.log") {
Ok(b) => logger = logger.with_output(
b.with_filter(log::LevelFilter::Info)
.with_ansi_escape_codes()
.flush_on_newline(true)
.build()
),
Err(error) => eprintln!("ided: failed to create ide.ansi.log: {}", error),
}
match logger.enable() {
Ok(logger_ref) => {
eprintln!("ided: enabled logger");
Some(logger_ref)
}
Err(error) => {
eprintln!("ided: failed to set default logger: {}", error);
None
}
}
}
fn main() {
redox_daemon::Daemon::new(daemon).expect("ided: failed to daemonize");
}
fn daemon(daemon: redox_daemon::Daemon) -> ! {
let _logger_ref = setup_logging();
let mut pcid_handle =
PcidServerHandle::connect_default().expect("ided: failed to setup channel to pcid");
println!("IDE {:#x?}", pcid_handle.fetch_header());
std::process::exit(0);
}
+8
View File
@@ -7,6 +7,14 @@ class = 1
subclass = 6
command = ["ahcid", "$NAME", "$BAR5", "$BARSIZE5", "$IRQ"]
# ided
[[drivers]]
name = "IDE storage"
class = 1
subclass = 1
command = ["ided"]
use_channel = true
# nvmed
[[drivers]]
name = "NVME storage"