From bd7bca30faeb1fafd67155798fc347e7ca1fb04f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 10 Sep 2016 19:03:31 -0600 Subject: [PATCH] Remove debugging messages, launch elf on APs --- arch/x86_64/src/memory/mod.rs | 3 --- arch/x86_64/src/start.rs | 1 - kernel/context/mod.rs | 1 - kernel/elf.rs | 5 ----- kernel/lib.rs | 18 ++++++++++-------- kernel/scheme/debug.rs | 1 - kernel/syscall/fs.rs | 23 ++++++++++++----------- 7 files changed, 22 insertions(+), 30 deletions(-) diff --git a/arch/x86_64/src/memory/mod.rs b/arch/x86_64/src/memory/mod.rs index f3b2ce3..02c6c2b 100644 --- a/arch/x86_64/src/memory/mod.rs +++ b/arch/x86_64/src/memory/mod.rs @@ -62,9 +62,6 @@ pub unsafe fn init(kernel_start: usize, kernel_end: usize) { // Copy memory map from bootloader location for (i, mut entry) in MEMORY_MAP.iter_mut().enumerate() { *entry = *(0x500 as *const MemoryArea).offset(i as isize); - if entry.length > 0 { - println!("{:?}", entry); - } } *ALLOCATOR.lock() = Some(AreaFrameAllocator::new(kernel_start, kernel_end, MemoryAreaIter::new(MEMORY_AREA_FREE))); diff --git a/arch/x86_64/src/start.rs b/arch/x86_64/src/start.rs index a154925..33d52f0 100644 --- a/arch/x86_64/src/start.rs +++ b/arch/x86_64/src/start.rs @@ -212,7 +212,6 @@ pub unsafe fn usermode(ip: usize, sp: usize) -> ! { mov rax, 0x23 push rax # Push code segment push rcx # Push rip - xchg bx, bx iretq" : : "{rbx}"(sp), "{rcx}"(ip) diff --git a/kernel/context/mod.rs b/kernel/context/mod.rs index a706b2f..e550b54 100644 --- a/kernel/context/mod.rs +++ b/kernel/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/kernel/elf.rs b/kernel/elf.rs index 88e7236..b379bba 100644 --- a/kernel/elf.rs +++ b/kernel/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/kernel/lib.rs b/kernel/lib.rs index 2608302..08c9944 100644 --- a/kernel/lib.rs +++ b/kernel/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/kernel/scheme/debug.rs b/kernel/scheme/debug.rs index 0555b09..35979b3 100644 --- a/kernel/scheme/debug.rs +++ b/kernel/scheme/debug.rs @@ -7,7 +7,6 @@ pub struct DebugScheme; impl Scheme for DebugScheme { fn open(&mut self, path: &[u8], _flags: usize) -> Result { - println!("DebugScheme::open: {}", unsafe { str::from_utf8_unchecked(path) }); Ok(0) } diff --git a/kernel/syscall/fs.rs b/kernel/syscall/fs.rs index c61478e..fed9bc7 100644 --- a/kernel/syscall/fs.rs +++ b/kernel/syscall/fs.rs @@ -7,8 +7,6 @@ use super::{Error, Result}; /// Read syscall pub fn read(fd: usize, buf: &mut [u8]) -> Result { - 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 { 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 { /// Write syscall pub fn write(fd: usize, buf: &[u8]) -> Result { - 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 { 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 { 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 { /// Close syscall pub fn close(fd: usize) -> Result { - 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 }