WIP: Predictable naming
This commit is contained in:
parent
86d676b540
commit
9d37f38849
|
@ -7,7 +7,7 @@ pub mod disk;
|
||||||
pub mod fis;
|
pub mod fis;
|
||||||
pub mod hba;
|
pub mod hba;
|
||||||
|
|
||||||
pub fn disks(base: usize) -> Vec<Disk> {
|
pub fn disks(base: usize, name: &str) -> Vec<Disk> {
|
||||||
unsafe { &mut *(base as *mut HbaMem) }.init();
|
unsafe { &mut *(base as *mut HbaMem) }.init();
|
||||||
let pi = unsafe { &mut *(base as *mut HbaMem) }.pi.read();
|
let pi = unsafe { &mut *(base as *mut HbaMem) }.pi.read();
|
||||||
let ret: Vec<Disk> = (0..32)
|
let ret: Vec<Disk> = (0..32)
|
||||||
|
@ -15,7 +15,7 @@ pub fn disks(base: usize) -> Vec<Disk> {
|
||||||
.filter_map(|i| {
|
.filter_map(|i| {
|
||||||
let port = &mut unsafe { &mut *(base as *mut HbaMem) }.ports[i];
|
let port = &mut unsafe { &mut *(base as *mut HbaMem) }.ports[i];
|
||||||
let port_type = port.probe();
|
let port_type = port.probe();
|
||||||
print!("{}", format!("{}: {:?}\n", i, port_type));
|
print!("{}", format!("{}-{}: {:?}\n", name, i, port_type));
|
||||||
match port_type {
|
match port_type {
|
||||||
HbaPortType::SATA => {
|
HbaPortType::SATA => {
|
||||||
match Disk::new(i, port) {
|
match Disk::new(i, port) {
|
||||||
|
|
|
@ -21,13 +21,16 @@ pub mod scheme;
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut args = env::args().skip(1);
|
let mut args = env::args().skip(1);
|
||||||
|
|
||||||
|
let mut name = args.next().expect("ahcid: no name provided");
|
||||||
|
name.push_str("_ahci");
|
||||||
|
|
||||||
let bar_str = args.next().expect("ahcid: no address provided");
|
let bar_str = args.next().expect("ahcid: no address provided");
|
||||||
let bar = usize::from_str_radix(&bar_str, 16).expect("ahcid: failed to parse address");
|
let bar = usize::from_str_radix(&bar_str, 16).expect("ahcid: failed to parse address");
|
||||||
|
|
||||||
let irq_str = args.next().expect("ahcid: no irq provided");
|
let irq_str = args.next().expect("ahcid: no irq provided");
|
||||||
let irq = irq_str.parse::<u8>().expect("ahcid: failed to parse irq");
|
let irq = irq_str.parse::<u8>().expect("ahcid: failed to parse irq");
|
||||||
|
|
||||||
print!("{}", format!(" + AHCI on: {:X} IRQ: {}\n", bar, irq));
|
print!("{}", format!(" + AHCI {} on: {:X} IRQ: {}\n", name, bar, irq));
|
||||||
|
|
||||||
// Daemonize
|
// Daemonize
|
||||||
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
||||||
|
@ -43,7 +46,7 @@ fn main() {
|
||||||
|
|
||||||
let mut event_file = File::open("event:").expect("ahcid: failed to open event file");
|
let mut event_file = File::open("event:").expect("ahcid: failed to open event file");
|
||||||
|
|
||||||
let scheme = DiskScheme::new(ahci::disks(address));
|
let scheme = DiskScheme::new(ahci::disks(address, &name));
|
||||||
loop {
|
loop {
|
||||||
let mut event = Event::default();
|
let mut event = Event::default();
|
||||||
if event_file.read(&mut event).expect("ahcid: failed to read event file") == 0 {
|
if event_file.read(&mut event).expect("ahcid: failed to read event file") == 0 {
|
||||||
|
|
|
@ -21,13 +21,16 @@ pub mod device;
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut args = env::args().skip(1);
|
let mut args = env::args().skip(1);
|
||||||
|
|
||||||
|
let mut name = args.next().expect("e1000d: no name provided");
|
||||||
|
name.push_str("_e1000");
|
||||||
|
|
||||||
let bar_str = args.next().expect("e1000d: no address provided");
|
let bar_str = args.next().expect("e1000d: no address provided");
|
||||||
let bar = usize::from_str_radix(&bar_str, 16).expect("e1000d: failed to parse address");
|
let bar = usize::from_str_radix(&bar_str, 16).expect("e1000d: failed to parse address");
|
||||||
|
|
||||||
let irq_str = args.next().expect("e1000d: no irq provided");
|
let irq_str = args.next().expect("e1000d: no irq provided");
|
||||||
let irq = irq_str.parse::<u8>().expect("e1000d: failed to parse irq");
|
let irq = irq_str.parse::<u8>().expect("e1000d: failed to parse irq");
|
||||||
|
|
||||||
print!("{}", format!(" + E1000 on: {:X}, IRQ: {}\n", bar, irq));
|
print!("{}", format!(" + E1000 {} on: {:X}, IRQ: {}\n", name, bar, irq));
|
||||||
|
|
||||||
// Daemonize
|
// Daemonize
|
||||||
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
||||||
|
|
|
@ -125,6 +125,10 @@ fn main() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let arg = match arg.as_str() {
|
let arg = match arg.as_str() {
|
||||||
|
"$BUS" => format!("{:>02X}", bus.num),
|
||||||
|
"$DEV" => format!("{:>02X}", dev.num),
|
||||||
|
"$FUNC" => format!("{:>02X}", func.num),
|
||||||
|
"$NAME" => format!("pci-{:>02X}.{:>02X}.{:>02X}", bus.num, dev.num, func.num),
|
||||||
"$BAR0" => bar_arg(0),
|
"$BAR0" => bar_arg(0),
|
||||||
"$BAR1" => bar_arg(1),
|
"$BAR1" => bar_arg(1),
|
||||||
"$BAR2" => bar_arg(2),
|
"$BAR2" => bar_arg(2),
|
||||||
|
@ -137,6 +141,8 @@ fn main() {
|
||||||
command.arg(&arg);
|
command.arg(&arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println!("PCID SPAWN {:?}", command);
|
||||||
|
|
||||||
match command.spawn() {
|
match command.spawn() {
|
||||||
Ok(mut child) => match child.wait() {
|
Ok(mut child) => match child.wait() {
|
||||||
Ok(_status) => (), //println!("pcid: waited for {}: {:?}", line, status.code()),
|
Ok(_status) => (), //println!("pcid: waited for {}: {:?}", line, status.code()),
|
||||||
|
|
|
@ -22,13 +22,16 @@ pub mod device;
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut args = env::args().skip(1);
|
let mut args = env::args().skip(1);
|
||||||
|
|
||||||
|
let mut name = args.next().expect("rtl8168d: no name provided");
|
||||||
|
name.push_str("_rtl8168");
|
||||||
|
|
||||||
let bar_str = args.next().expect("rtl8168d: no address provided");
|
let bar_str = args.next().expect("rtl8168d: no address provided");
|
||||||
let bar = usize::from_str_radix(&bar_str, 16).expect("rtl8168d: failed to parse address");
|
let bar = usize::from_str_radix(&bar_str, 16).expect("rtl8168d: failed to parse address");
|
||||||
|
|
||||||
let irq_str = args.next().expect("rtl8168d: no irq provided");
|
let irq_str = args.next().expect("rtl8168d: no irq provided");
|
||||||
let irq = irq_str.parse::<u8>().expect("rtl8168d: failed to parse irq");
|
let irq = irq_str.parse::<u8>().expect("rtl8168d: failed to parse irq");
|
||||||
|
|
||||||
print!("{}", format!(" + RTL8168 on: {:X}, IRQ: {}\n", bar, irq));
|
print!("{}", format!(" + RTL8168 {} on: {:X}, IRQ: {}\n", name, bar, irq));
|
||||||
|
|
||||||
// Daemonize
|
// Daemonize
|
||||||
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
if unsafe { syscall::clone(0).unwrap() } == 0 {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
initfs:bin/pcid /etc/pcid.toml
|
|
||||||
ptyd
|
|
||||||
randd
|
randd
|
||||||
|
ptyd
|
||||||
|
initfs:bin/pcid /etc/pcid.toml
|
||||||
ethernetd
|
ethernetd
|
||||||
ipd
|
ipd
|
||||||
tcpd
|
tcpd
|
||||||
|
|
|
@ -3,11 +3,11 @@ name = "E1000 NIC"
|
||||||
class = 2
|
class = 2
|
||||||
vendor = 32902
|
vendor = 32902
|
||||||
device = 4110
|
device = 4110
|
||||||
command = ["e1000d", "$BAR0", "$IRQ"]
|
command = ["e1000d", "$NAME", "$BAR0", "$IRQ"]
|
||||||
|
|
||||||
[[drivers]]
|
[[drivers]]
|
||||||
name = "RTL8168 NIC"
|
name = "RTL8168 NIC"
|
||||||
class = 2
|
class = 2
|
||||||
vendor = 4332
|
vendor = 4332
|
||||||
device = 33128
|
device = 33128
|
||||||
command = ["rtl8168d", "$BAR2", "$IRQ"]
|
command = ["rtl8168d", "$NAME", "$BAR2", "$IRQ"]
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
name = "AHCI storage"
|
name = "AHCI storage"
|
||||||
class = 1
|
class = 1
|
||||||
subclass = 6
|
subclass = 6
|
||||||
command = ["initfs:bin/ahcid", "$BAR5", "$IRQ"]
|
command = ["initfs:bin/ahcid", "$NAME", "$BAR5", "$IRQ"]
|
||||||
|
|
Loading…
Reference in a new issue