From 4b25dcded24a68d93824d922a3dec5e8a72a0926 Mon Sep 17 00:00:00 2001 From: LoGin Date: Thu, 20 Nov 2025 00:29:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20#1387=20=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E6=8A=8Asys=5Fexit=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=9A=84bug=20(#1388)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longjin --- kernel/src/process/syscall/sys_exit.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/src/process/syscall/sys_exit.rs b/kernel/src/process/syscall/sys_exit.rs index 67ae92890..4051dc04d 100644 --- a/kernel/src/process/syscall/sys_exit.rs +++ b/kernel/src/process/syscall/sys_exit.rs @@ -20,7 +20,9 @@ impl Syscall for SysExit { fn handle(&self, args: &[usize], _frame: &mut TrapFrame) -> Result { let exit_code = Self::exit_code(args); - ProcessManager::group_exit((exit_code & 0xff) << 8); + // 仿照 Linux sys_exit:只取低 8 位并左移 8 位,形成 wstatus 编码, + // 然后只退出当前线程(不退出整个线程组)。 + ProcessManager::exit((exit_code & 0xff) << 8); } fn entry_format(&self, args: &[usize]) -> Vec {