您的位置:首页 > 运维架构 > Linux

在linux 4.x内核中增加系统调用

2016-02-29 14:55 609 查看
系统版本:deepin 2015.1 x64

内核版本:4.4.3

1. 下载内核源代码

在www.kernel.org处下载相应的内核版本,解压并进入源代码根目录。

2. 增加系统调用号

在系统调用入口表中增加一项:

vim arch/x86/entry/syscalls/syscall_64.tbl

在文件末端增加自己的系统调用函数以及对应的系统调用编号,注意不要覆盖原有的系统调用



3. 声明系统调用函数

vim include/linux/syscalls.h

在末端加入系统调用函数的声明



4. 实现系统调用函数

vim kernel/sys.c

在文件末端加入对应的实现函数:



该系统调用打印hello加上参数。

5. 编译安装内核

编译安装内核用到以下命令

make oldconfig#一直回车就行

make -j8
#-j后面的数字表示多线程编译的个数

sudo make modules_install

sudo make install

sudo reboot

重启后通过uname -r发现当前系统内核已被更新



6. 测试

编写测试用例

#include<unistd.h>
int main() {
for(int i = 0; i < 5; i++) {
syscall(546, i);
}
return 0;
}打印的内容可以通过dmesg查看:



可以看到打印结果和预期一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息