xv6操作系统创建一个有参数的的系统调用。
对于无参数的系统调用,有很多教程,我也发现了很多。但是对于有参数的,很那找到。这里我写明关键字-“带参数”,希望帮助到大家。如果代码有错误,敬请指正。
1.实验环境
1. Ubuntu 15.5虚拟机
2. qemu虚拟环境
3. xv6操作内核
2.创建步骤
我以 int set_priority(int priority,int pid)
为例。
1. 在proc.c中完成功能函数,格式类如 int set_priority(int priority,int pid){.......}
2. 在user.h中和defs.h中注明用户接口,格式类如 int set_priority(int priority,int pid)
3. 在syscall.h中声明系统标识,格式类如 #define SYS_setpriority 24
4. 在syscall.c中声明系统标识和系统调用得关系,格式类如 extern int set_priority(void)
以及[SYS_set_priority] sys_set_priority
。在这里系统调用中要求填void
5. 最关键的一步,在sysproc.c中声明系统调用和功能函数的关联,格式类如:
int