如何在Linux 4.12内核添加系统调用
来源:互联网 发布:网络负面新闻消除方案 编辑:程序博客网 时间:2024/06/05 03:15
转发请注明原文出处:http://blog.csdn.net/qq_34911465/article/details/74840024
基本情况
系统版本:CentOS Linux 7
内核版本:linux-4.12
准备操作
1.下载并且解压打开文件夹
2.进入文件夹后进入系统调用的入口表,这个表记录了系统调用的一些基本信息。
系统调用表就是这个文件了,用如图命令打开
这里是添加系统调用的格式,添加我们自己的系统调用也要按照这个格式来操作,第一个是调用号,就是用来调用的标志,abi不知有什么作用,名字是也不知,入口是函数名,按照格式填写即可。
这里是我添加的系统调用,参考上图,我们知道这里的abi有三种可以填(common、64、x32) ,经过测试发现x32没有效果,所以我们的abi只能写common或者x64,如图中调用号为549和550所示。
3.添加系统调用声明
打开这个文件即可
在文件尾部进行如下添加,这里的void很重要,如果是没有参数的调用那么就一定要写void,否则会失败。
4.实现系统调用
实现系统调用的文件是kernel文件夹下的sys.c文件,也可以自己写一个文件,但是自己写文件还需修改Makefile,这里从简。
在文件的最后一行编写实现代码,同样的要在括号中写void。红框的都是涉及个人信息,可修改
5.编译内核
参看之前的文章: Linux 编译内核全记录
编译内核成功后重启进入新的内核。
6.编写调用的程序
#include<unistd.h>int main(){ syscall(549);//对于无参的直接这样调用即可,有参的要添加参数,括号中填写的是之前定义的系统调用号 return 0;}
编译
//使用g++命令编译,g++命令加上文件名编译,默认生成a.out文件,使用./a.out运行
7.查看系统调用
//直接在终端中打dmesg,出来的字符中就有我们的系统调用的结果了。
这是系统调用号为549的程序,abi是common
这是系统
调用号为550的程序,abi是64,出现两个结果是受了上面这个程序的影响。
成功
阅读全文
1 0
- 如何在Linux 4.12内核添加系统调用
- 如何在Linux 4.12内核添加系统调用
- 如何在arm linux kernel(内核)中添加系统调用
- 如何在linux内核中添加系统调用
- 如何添加Linux内核系统调用
- linux内核添加系统调用
- Linux内核添加系统调用
- linux内核添加系统调用
- linux内核--添加系统调用
- 如何在Linux系统中添加新的系统调用
- 如何在Linux内核里增加一个系统调用
- 如何在Linux内核里增加一个系统调用
- 如何添加linux系统调用
- 如何在Linux中添加新的系统调用
- 如何在Linux中添加新的系统调用
- 如何在Linux中添加新的系统调用
- 如何在Linux中添加新的系统调用
- linux修改内核、添加系统调用过程
- j2se2j2ee-1
- C语言内存布局
- iOS MAC终端界面 ~ 创建数据库sqlite3
- 自定义View 相关(二)
- Leetcode# Reverse String
- 如何在Linux 4.12内核添加系统调用
- Struts2 简介(三)
- Hibernate四天学习之第一天
- 找到一个数组中相加为特定数值的两个元素
- 腾讯课堂前端训练营已发车,快上车,带你十天拿下秋招offer
- JavaScript基础之___函数
- openCV实现图像边缘检测
- 网络层(三)IP协议
- 实战「 docker TLS加密通讯 」