From 2d743b4b0de18cb5dda14d33c2dc40109e580515 Mon Sep 17 00:00:00 2001 From: GZTime Date: Mon, 18 Mar 2024 12:06:12 +0800 Subject: [PATCH] fix(lab/4): typos & docs --- docs/labs/0x04/tasks.md | 8 ++++---- src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/labs/0x04/tasks.md b/docs/labs/0x04/tasks.md index 674b96f..fc3e34f 100644 --- a/docs/labs/0x04/tasks.md +++ b/docs/labs/0x04/tasks.md @@ -614,13 +614,13 @@ pub fn write(fd: u8, buf: &[u8]) -> isize { } ``` -对于 `write` 系统调用,用户程序需要将数据写入到资源中,对此系统调用进行如下约定: +对于 `write` 系统调用,用户程序需要将数据写入到资源中,在 `syscall::dispatcher` 中对此系统调用的相关参数进行如下约定: ``` fd: arg0 as u8, buf: &[u8] (ptr: arg1 as *const u8, len: arg2) ``` -为了便于理解,给出了用户侧进行调用时的示例代码,从 `print!` 的实现开始: +为了便于理解,给出了用户侧进行调用时的相关调用过程,从 `print!` 的实现开始: ```rust #[macro_export] @@ -644,7 +644,7 @@ impl Stdout { } ``` -传递给 `sys_write`,由此函数对传入的参数进行处理,并调用系统调用: +从而传递给 `sys_write`,由此函数对传入的参数进行处理,并调用系统调用: ```rust pub fn sys_write(fd: u8, buf: &[u8]) -> Option { @@ -763,7 +763,7 @@ pub fn exit(ret: isize, context: &mut ProcessContext) { 尝试修改用户态库中的 `entry!` 和 `panic` 函数,在用户程序中调用 `exit` 系统调用,并传递一个返回值,以验证用户程序的退出功能。 - 值此为止,你应当可以生成用户程序、输出 `Hello, world!!!`,并正确退出。 + 至此为止,你应当可以生成用户程序、输出 `Hello, world!!!`,并正确退出。 ### 进程的创建与等待 diff --git a/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs b/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs index 0f3a8db..115c018 100644 --- a/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs +++ b/src/0x04/pkg/kernel/src/interrupt/syscall/mod.rs @@ -41,6 +41,9 @@ pub fn dispatcher(context: &mut ProcessContext) { context.regs.rdx, ); + // NOTE: you may want to trace syscall arguments + // trace!("{}", args); + match args.syscall { // fd: arg0 as u8, buf: &[u8] (ptr: arg1 as *const u8, len: arg2) Syscall::Read => { /* FIXME: read from fd & return length */},