操作系统课程设计:实验一添加一个系统调用

(在网上看了好多,然后完成了实验,写这篇记录一下所学)
主要参考的是以下两篇教程,当然有些是我自己的经验
https://www.cnblogs.com/tsruixi/p/10777242.html
https://blog.csdn.net/zyf2333/article/details/80043152?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
实验一 linux 内核编译及添加系统调用

内容要求

添加一个系统调用,实现对指定进程的 nice 值的修改或读取功能,并返回进程最 新的 nice 值及优先级 prio。建议调用原型为:
int mysetnice(pid_t pid, int flag, int nicevalue, void __user * prio, void __user * nice);

正文

  1. ctrl+Alt+T进入命令行,输入以下代码,就可以下载
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.1.tar.xz

一般来说,在home文件夹里可以看见我们刚刚下载好的压缩包
我在home 文件夹下新建一个Linux文件夹,将压缩包拉入其中,右键直接解压

  1. 我们这个实验有三个文件需要修改(大家也可以从命令行进去,不过我懒,就直接找到文件打开修改了)
    1、arch/x86/entry/syscalls/syscall_64.tbl
    作用是分配系统调用号
    这里面我们需要加上一行

    333 64 mysetnice  sys_mysetnice

    2、include/linux/syscalls.h
    作用是添加服务例程的原型声明
    然后拉到最后,加上一行

    asmlinkage long sys_mysetnice(pid_t pid, int flag, int nicevalue, void __user* prio, void __user* nice);

    3、 kernel/sys.c
    作用是实现系统调用服务例程
    添加代码

    SYSCALL_DEFINE5(mysetnice, pid_t, pid, int, flag, int, nicevalue, void __user *, prio, void __user *, nice)
    {
         
     struct pid * kpid;
    struct task_struct * task;
    int
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值