diff --git a/context/mod.rs b/context/mod.rs index a706b2fc251c90bb2a7b93fa0226554bbc4f271f..e550b5491fda0794b74e7ff77a3b00aaab954c0d 100644 --- a/context/mod.rs +++ b/context/mod.rs @@ -80,7 +80,6 @@ impl ContextList { } context.arch.set_stack(stack.as_ptr() as usize + offset); context.kstack = Some(stack); - println!("{}: {:X}", context.id, func as usize); } Ok(context_lock) } diff --git a/elf.rs b/elf.rs index 88e7236ef97a48e195712ee75ea7dd880ac3766a..b379bba605fbba658389d766f7d7307bb6766e61 100644 --- a/elf.rs +++ b/elf.rs @@ -56,11 +56,6 @@ impl<'a> Elf<'a> { let mut active_table = unsafe { ActivePageTable::new() }; for segment in self.segments() { - println!("Segment {:X} flags {:X} off {:X} virt {:X} phys {:X} file {} mem {} align {}", - segment.p_type, segment.p_flags, segment.p_offset, - segment.p_vaddr, segment.p_paddr, segment.p_filesz, - segment.p_memsz, segment.p_align); - if segment.p_type == program_header::PT_LOAD { let start_page = Page::containing_address(VirtualAddress::new(segment.p_vaddr as usize)); let end_page = Page::containing_address(VirtualAddress::new((segment.p_vaddr + segment.p_memsz) as usize)); diff --git a/lib.rs b/lib.rs index 2608302330ff765c7ecfa00a0436a9cdce8b0154..08c9944197e77632126ced4f185bfa6d68ae05cf 100644 --- a/lib.rs +++ b/lib.rs @@ -133,14 +133,9 @@ 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); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(0)); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(1)); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(2)); let elf = elf::Elf::from(include_bytes!("../build/userspace/init")).expect("could not load elf"); elf.run(); @@ -168,6 +163,13 @@ pub extern fn kmain_ap(id: usize) { let pid = syscall::getpid(); println!("AP {}: {:?}", id, pid); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(0)); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(1)); + assert_eq!(syscall::open("debug:".as_bytes(), 0), Ok(2)); + + let elf = elf::Elf::from(include_bytes!("../build/userspace/init")).expect("could not load elf"); + elf.run(); + loop { unsafe { interrupt::enable_and_halt() } } diff --git a/scheme/debug.rs b/scheme/debug.rs index 0555b091acf624f3d839a84967c1c2cfe27c5c5a..35979b356fea98fd0bed70ea8b032e568d8e4333 100644 --- a/scheme/debug.rs +++ b/scheme/debug.rs @@ -7,7 +7,6 @@ pub struct DebugScheme; impl Scheme for DebugScheme { fn open(&mut self, path: &[u8], _flags: usize) -> Result<usize> { - println!("DebugScheme::open: {}", unsafe { str::from_utf8_unchecked(path) }); Ok(0) } diff --git a/syscall/fs.rs b/syscall/fs.rs index c61478e01416254d3c95588b91888e3ddcb946ff..fed9bc727369a0f1cca9f96c466e1a2184c690b3 100644 --- a/syscall/fs.rs +++ b/syscall/fs.rs @@ -7,8 +7,6 @@ use super::{Error, Result}; /// Read syscall pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> { - println!("Read {}: {:X} {}", fd, buf.as_ptr() as usize, buf.len()); - let file = { let contexts = context::contexts(); let context_lock = contexts.current().ok_or(Error::NoProcess)?; @@ -17,8 +15,6 @@ pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> { file }; - println!("{:?}", file); - let schemes = scheme::schemes(); let scheme_mutex = schemes.get(file.scheme).ok_or(Error::BadFile)?; let result = scheme_mutex.lock().read(file.number, buf); @@ -27,8 +23,6 @@ pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> { /// Write syscall pub fn write(fd: usize, buf: &[u8]) -> Result<usize> { - println!("Write {}: {:X} {}", fd, buf.as_ptr() as usize, buf.len()); - let file = { let contexts = context::contexts(); let context_lock = contexts.current().ok_or(Error::NoProcess)?; @@ -37,8 +31,6 @@ pub fn write(fd: usize, buf: &[u8]) -> Result<usize> { file }; - println!("{:?}: {:?}", file, ::core::str::from_utf8(buf)); - let schemes = scheme::schemes(); let scheme_mutex = schemes.get(file.scheme).ok_or(Error::BadFile)?; let result = scheme_mutex.lock().write(file.number, buf); @@ -50,7 +42,6 @@ pub fn open(path: &[u8], flags: usize) -> Result<usize> { let mut parts = path.splitn(2, |&b| b == b':'); let namespace_opt = parts.next(); let reference_opt = parts.next(); - println!("Open namespace {:?} reference {:?}: {:X}", namespace_opt.map(::core::str::from_utf8), reference_opt.map(::core::str::from_utf8), flags); let (scheme_id, file_id) = { let namespace = namespace_opt.ok_or(Error::NoEntry)?; @@ -71,6 +62,16 @@ pub fn open(path: &[u8], flags: usize) -> Result<usize> { /// Close syscall pub fn close(fd: usize) -> Result<usize> { - println!("Close {}", fd); - Ok(0) + let file = { + let contexts = context::contexts(); + let context_lock = contexts.current().ok_or(Error::NoProcess)?; + let context = context_lock.read(); + let file = context.files.get(fd).ok_or(Error::BadFile)?.ok_or(Error::BadFile)?; + file + }; + + let schemes = scheme::schemes(); + let scheme_mutex = schemes.get(file.scheme).ok_or(Error::BadFile)?; + let result = scheme_mutex.lock().close(file.number).and(Ok(0)); + result }