From ad23fcddf893d7f92d2bf3efdb66e969416d2852 Mon Sep 17 00:00:00 2001 From: login Date: Wed, 23 Nov 2022 21:34:35 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8D=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=97=B6=E6=9C=AA=E9=87=8A=E6=94=BEsignal?= =?UTF-8?q?=E5=92=8Csighand=20&&=20=E5=A2=9E=E5=8A=A0=E8=B5=9E=E8=B5=8F?= =?UTF-8?q?=E8=80=85=E5=90=8D=E5=8D=95=EF=BC=9ADavid=20Wen=20(#93)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bugfix: 修复进程退出时未释放signal和sighand的bug * 增加赞赏者名单:David Wen --- README.md | 1 + README_EN.md | 1 + kernel/src/process/process.c | 9 +++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2d7c7dc7..84219844 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,7 @@ ### 个人赞赏者列表 +- David Wen - 悟 - [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) - slientbard diff --git a/README_EN.md b/README_EN.md index 660c510c..a7be9036 100644 --- a/README_EN.md +++ b/README_EN.md @@ -80,6 +80,7 @@ We hope that in the future, some enterprises can sponsor DragonOS and inject fin ### Individual Sponsor List +- David Wen - 悟 - [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) - slientbard diff --git a/kernel/src/process/process.c b/kernel/src/process/process.c index 5b808bcd..2883a746 100644 --- a/kernel/src/process/process.c +++ b/kernel/src/process/process.c @@ -46,6 +46,9 @@ extern struct mm_struct initial_mm; extern struct signal_struct INITIAL_SIGNALS; extern struct sighand_struct INITIAL_SIGHAND; +extern void process_exit_sighand(struct process_control_block *pcb); +extern void process_exit_signal(struct process_control_block *pcb); + // 设置初始进程的PCB #define INITIAL_PROC(proc) \ { \ @@ -91,8 +94,6 @@ uint64_t process_exit_files(struct process_control_block *pcb); */ uint64_t process_exit_mm(struct process_control_block *pcb); - - /** * @brief 切换进程 * @@ -784,7 +785,6 @@ uint64_t process_exit_mm(struct process_control_block *pcb) return 0; } - /** * @brief todo: 回收线程结构体 * @@ -811,7 +811,8 @@ int process_release_pcb(struct process_control_block *pcb) // todo: 对相关的pcb加锁 pcb->prev_pcb->next_pcb = pcb->next_pcb; pcb->next_pcb->prev_pcb = pcb->prev_pcb; - + process_exit_sighand(pcb); + process_exit_signal(pcb); // 释放当前pcb kfree(pcb); return 0;