diff --git a/arch/x86_64/src/lib.rs b/arch/x86_64/src/lib.rs index bd18ee9..02a5ff3 100644 --- a/arch/x86_64/src/lib.rs +++ b/arch/x86_64/src/lib.rs @@ -89,7 +89,8 @@ macro_rules! interrupt_error { } // Push scratch registers - asm!("push rax + asm!("xchg bx, bx + push rax push rcx push rdx push rdi diff --git a/kernel/lib.rs b/kernel/lib.rs index d88d926..bc93fc5 100644 --- a/kernel/lib.rs +++ b/kernel/lib.rs @@ -133,6 +133,15 @@ pub extern fn kmain() { let pid = syscall::getpid(); println!("BSP: {:?}", pid); + let stdin = syscall::open("debug:".as_bytes(), 0); + println!("STDIN: {:?}", stdin); + + let stdout = syscall::open("debug:".as_bytes(), 0); + println!("STDOUT: {:?}", stdout); + + let stderr = syscall::open("debug:".as_bytes(), 0); + println!("STDERR: {:?}", stderr); + let elf = elf::Elf::from(include_bytes!("../init/main")).expect("could not load elf"); elf.run(); diff --git a/kernel/syscall/fs.rs b/kernel/syscall/fs.rs index 87fe2db..3a23b6c 100644 --- a/kernel/syscall/fs.rs +++ b/kernel/syscall/fs.rs @@ -7,7 +7,7 @@ use super::{Error, Result}; /// Read syscall pub fn read(fd: usize, buf: &mut [u8]) -> Result { - println!("Read {}: {}", fd, buf.len()); + println!("Read {}: {:X} {}", fd, buf.as_ptr() as usize, buf.len()); if let Some(context_lock) = context::contexts().current() { let context = context_lock.read(); if let Some(file) = context.files.get(fd) { @@ -23,7 +23,7 @@ pub fn read(fd: usize, buf: &mut [u8]) -> Result { /// Write syscall pub fn write(fd: usize, buf: &[u8]) -> Result { - println!("Write {}: {}", fd, buf.len()); + println!("Write {}: {:X} {}", fd, buf.as_ptr() as usize, buf.len()); if let Some(context_lock) = context::contexts().current() { let context = context_lock.read(); if let Some(file) = context.files.get(fd) {