System call tracing
修改 Makefile
user
在 user/user.h 中添加系统调用声明
在 user/usys.pl 中添加桩程序,生成 user/usys.S 即真实的系统调用桩程序
kernel
在 kernel/syscall.h 中添加系统调用号
在 kernel/proc.h 中修改 struct proc,添加 trace_mask 变量,在 kernel/sysproc.c 中添加 sys_trace() 保存参数到 proc 新变量 trace_mask 中
在 kernel/proc.c 中修改 fork(),将父进程的 trace_mask 拷贝到子进程
在 kernel/syscall.c 中修改 syscall() 打印 trace 的输出,添加系统调用名称数组,添加系统调用声明和 syscalls
Sysinfo
修改 Makefile
user
在 user/user.h 中添加系统调用声明
在 user/usys.pl 中添加桩程序,生成 user/usys.S 即真实的系统调用桩程序
kernel
在 kernel/syscall.h 中添加系统调用号
在 kernel/syscall.c 中添加系统调用声明和 syscalls
在 kernel/kalloc.c 中添加获取空闲内存数的函数
在 kernel/proc.c 中添加获取不处于 UNUSED 的进程数的函数
在 kernel/sysproc.c 中添加 sys_sysinfo(),参考 kernel/sysfile.c 下的 sys_fstat() 和 kernel/file.c 下的 filestat(),看如何使用 copyout()