* feat(exec): 实现多线程exec的去线程化功能 - 在de_thread()中实现线程组清理与PID交换逻辑 - 添加GROUP_EXEC标志防止exec期间创建新线程 - 修改fork、exit、signal处理以支持去线程化语义 Signed-off-by: longjin <longjin@DragonOS.org> * fix(process): 修复多线程exec时父进程提前回收旧leader的问题 - 在de_thread中增加对旧leader的回收逻辑,确保由exec线程负责回收 - 新增reap_blocked_by_group_exec函数,在do_wait和do_waitpid中检查并跳过被exec阻 塞的进程回收 Signed-off-by: longjin <longjin@DragonOS.org> * feat(ipc/sighand): 实现线程组exec的同步机制 - 在SigHand结构体中添加group_exec_wait_queue和group_exec_notify_count字段,用于 线程组exec期间的同步 - 新增wait_group_exec_event_interruptible和wait_group_exec_event_killable方法, 支持可中断和可终止的等待 - 在de_thread函数中使用新的等待机制替代忙等待,提高效率 - 在进程退出时正确处理group_exec_notify_count的递减和唤醒操作 - 修复fork时对GROUP_EXEC和GROUP_EXIT标志的检查,防止在exec期间创建新线程 - 调整进程父子关系处理逻辑,确保wait系统调用在__WNOTHREAD标志下的正确行为 - 在wait_queue模块中新增killable等待模式,支持可终止的信号等待 Signed-off-by: longjin <longjin@DragonOS.org> * docs: 新增de_thread机制文档并清理调试日志 - 新增de_thread机制原理文档,详细说明多线程exec的去线程化流程 - 清理exec.rs和exit.rs中的调试日志输出 Signed-off-by: longjin <longjin@DragonOS.org> * refactor(ipc): 添加 with_group_exec_check 方法以统一处理线程组并发插入 - 在 SigHand 结构体中新增 with_group_exec_check 方法,用于在 GROUP_EXEC/GROUP_EXIT 锁下执行关键区操作,避免并发插入线程组 - 重构 ProcessManager 中的线程组加入逻辑,使用新方法替代原有的手动标志检查,提升代码可维护性 Signed-off-by: longjin <longjin@DragonOS.org> * feat(ipc): 重构线程组exec状态管理 - 新增`start_group_exec`方法,合并设置exec标志与记录执行者操作 - 重构`exchange_tid_and_raw_pids`方法,整合线程ID与原始PID交换逻辑 - 修复`finish_group_exec`调用条件判断逻辑 Signed-off-by: longjin <longjin@DragonOS.org> --------- Signed-off-by: longjin <longjin@DragonOS.org> |
||
|---|---|---|
| .. | ||
| de_thread.md | ||
| index.rst | ||
| kthread.md | ||
| load_binary.md | ||