[源码和文档分享]Linux内核编译及添加系统调用

1 总体设计思路

系统调用的本质是调用内核函数,以内核态运行程序。为了在内核态下运行,本实验针对Linux的内核进行修改,增加自定义系统调用函数实现用户态程序对任意进程的nice值进行修改或者读取来进行测试。

2 主要函数的接口设计

核心态程序

SYSCALL_DEFINE3(mysetnice, pid_t, pid, int, flag, int, nicevalue)

其中pid为选择进程的进程标识符;flag是操作符,设计为0时读取nice值,设计为1时进行修改操作;nice值为一返回变量,返回内核程序读取到的进程nice值;共计三个变量。

使用SYSCALL_DEFINE声明添加到~/kernel/sys.c文件中。

3 项目实现过程

3.1 准备

本次实验使用的环境为装载在Vmware Workstation Pro 14中的Ubuntu 17.10镜像。

镜像下载地址:http://mirrors.zju.edu.cn/ubuntu-releases/17.10/

为了编译执行顺利,我给虚拟机分配了8GB RAM和100GB虚拟硬盘空间,同时vCPU分配了8个核心,以便make -jn命令的使用。

安装ubuntu的时候,一定要注意查看/boot分区是否足够,如果不是工作环境最好直接将/boot分区挂载在根目录下,否则编译的时候产生的文件会塞满/boot分区导致编译安装失败。

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1413.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先让我们脑补一下什么是系统调用,个人理解系统调用就是调用系统函数(内核状态下的函数)。在linux系统中,用户通...
    litesky阅读 4,536评论 0 2
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,571评论 9 467
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,957评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,237评论 2 33
  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,525评论 1 10