From d31d5f0bde2393ca387a35a77bfcf088d3c871d4 Mon Sep 17 00:00:00 2001 From: Yuke Peng Date: Sun, 28 Aug 2022 19:53:14 -0700 Subject: [PATCH] fix some bugs --- src/kxos-frame/src/vm/space.rs | 4 ++-- src/kxos-std/src/syscall/mod.rs | 3 +-- src/kxos-user/hello_world/hello_world.s | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/kxos-frame/src/vm/space.rs b/src/kxos-frame/src/vm/space.rs index 07c54b2df..a081cd109 100644 --- a/src/kxos-frame/src/vm/space.rs +++ b/src/kxos-frame/src/vm/space.rs @@ -48,9 +48,9 @@ impl VmSpace { if options.perm.contains(VmPerm::W) { flags.insert(PTFlags::WRITABLE); } - if options.perm.contains(VmPerm::U) { + // if options.perm.contains(VmPerm::U) { flags.insert(PTFlags::USER); - } + // } if options.addr.is_none() { return Err(Error::InvalidArgs); } diff --git a/src/kxos-std/src/syscall/mod.rs b/src/kxos-std/src/syscall/mod.rs index c1f80f822..bff5ad64b 100644 --- a/src/kxos-std/src/syscall/mod.rs +++ b/src/kxos-std/src/syscall/mod.rs @@ -70,8 +70,7 @@ pub fn sys_write(fd: u64, user_buf_ptr: u64, user_buf_len: u64) -> SyscallResult let user_buffer = copy_bytes_from_user(user_space, user_buf_ptr as usize, user_buf_len as usize) .expect("read user buffer failed"); - let content = CString::from_vec_with_nul(user_buffer).expect("read string failed"); - // TODO: print content + let content = alloc::str::from_utf8(user_buffer.as_slice()).expect("Invalid content"); // TODO: print content info!("Message from user mode: {:?}", content); SyscallResult::Return(0) } else { diff --git a/src/kxos-user/hello_world/hello_world.s b/src/kxos-user/hello_world/hello_world.s index 5765e27a8..c55da226b 100644 --- a/src/kxos-user/hello_world/hello_world.s +++ b/src/kxos-user/hello_world/hello_world.s @@ -3,7 +3,7 @@ global _start section .text _start: - mov rax, 64 ; syswrite + mov rax, 1 ; syswrite mov rdi, 1 ; fd mov rsi, msg ; "Hello, world!\n", mov rdx, msglen ; sizeof("Hello, world!\n")