增大NPROC,并在每轮测试后清理僵尸进程
内核侧 include/kernel/process.h (line 17) 把 NPROC 从 64 提到了 128。 同一个头文件里,wait 接口现在带 options,并新增了 kill_all() 声明。 kernel/process.c (line 83) 的 getproc(pid) 不再直接按 pool[pid - 1] 取,而是扫描真实进程表按 pid 找进程,避免 pid 增长后查错槽位。 kernel/process.c (line 917) 的 wait() 现在支持 WNOHANG 风格的非阻塞等待。 kernel/process.c (line 1244) 新增了 kill_all(sig, exclude),用于一次性给除当前进程和 initproc 外的所有进程发信号。 kernel/syscall.c (line 951) 的 sys_wait() 已接入新的 wait(..., options)。 kernel/syscall.c (line 963) 的 sys_kill() 现在支持 pid == -1,会走 kill_all()。 kernel/syscall.c (line 1236) 的 sched_setaffinity/getaffinity 去掉了 pid > NPROC 这种错误前提,改成真实查 pid 是否存在。 用户态公共能力 user/include/def.h (line 19) 补了 WNOHANG、ECHILD、SIGKILL。 user/include/usercall.h (line 10) 增加了用户态 sys_kill() 声明。 user/riscv/usys.S (line 15) 和 user/loongarch/usys.S (line 32) 都导出了 sys_kill 129。 RISC-V 提交流程 user/riscv/user.c (line 394) 新增了 cleanup_ltp_round(),逻辑是: sys_kill(-1, SIGKILL),然后 waitpid(-1, ..., WNOHANG) 循环回收残留子进程。 user/riscv/user.c (line 418) 新增了 prepare_ltp_tmpdir(),给每轮 LTP 单独准备 TMPDIR。 user/riscv/user.c (line 461) 的 run_submit() 现在顺序是: 前置测试 -> cleanup_ltp_round("pre-ltp") -> ltp-musl -> 清理 -> ltp-glibc -> 清理。 user/riscv/user.c (line 300) 和 user/riscv/user.c (line 310) 里,musl/glibc 两轮分别用了不同的 TMPDIR。 user/riscv/user.c (line 517) 和 user/riscv/user.c (line 554) 把 timeout -s KILL 改成了 timeout -s 9。 LoongArch 提交流程 user/loongarch/user.c (line 431) 同样加了 cleanup_ltp_round()。 user/loongarch/user.c (line 455) 同样加了 prepare_ltp_tmpdir()。 user/loongarch/user.c (line 558) 的 run_submit() 现在也是: 前置测试 -> cleanup_ltp_round("pre-ltp") -> ltp-glibc -> 清理 -> ltp-musl -> 清理。 user/loongarch/user.c (line 339) 和 user/loongarch/user.c (line 347) 里,glbic/musl 也拆成了不同 TMPDIR。 user/loongarch/user.c (line 496) 和 user/loongarch/user.c (line 591) 里,timeout -s KILL 也改成了 9。