Lab syscall: System calls

Posted on 2023-04-16 18:07  lyc2002  阅读(22)  评论(0编辑  收藏  举报

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()