在Ubuntu下添加系统调用

status
category
date
summary
slug
icon
tags
password
需求功能:
  • 编写新的Linux系统调用
  • 添加系统编号
  • 编写用例测试

准备内核

下载并解压内核,并将其移动到/usr/src目录下;安装编译内核所需要的依赖,详情参考在Ubuntu 18.04 下编译Linux内核

编写系统调用函数

进入需要安装的内核目录:可用TAB补全目录
编写自己的系统调用函数:
在vim命令模式下,使用Ctrl + F和Ctrl + B可快速翻页
在末尾插入以下代码:
printf运行在用户态,而printk运行在内核态;后者打印的内容不一定显示在终端上,但一定会保存在内核缓冲区里,可以使用dmesg查看
然后:wq退出
notion image
添加系统调用函数

声明系统调用函数

编辑声明系统调用函数的头文件:(注意路径和文件名不要弄错,推荐使用自动补全)
notion image
声明函数

添加系统调用编号

编辑文件:
notion image
添加系统调用

编译安装内核

安装内核之后重启,详情参考在Ubuntu 18.04 下编译Linux内核

编写程序验证

创建C程序并执行系统调用:(通过syscall(xxx);来调用xxx号系统调用)
notion image
test.c
编译C程序:
执行:
查看结果:
notion image
Loading...

© 刘口子 2018-2025