在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查看:
可以看到打印结果和预期一致。
内核版本: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查看:
可以看到打印结果和预期一致。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程