ubuntu 10.10 添加系统调用全过程
来源:互联网 发布:linux 远程拷贝文件夹 编辑:程序博客网 时间:2024/06/05 18:37
1.下载内核 在http://www.kernel.org/下载linux-2.6.38, 你可以选择稳定版或者新的测试版,但一定要下载Full source版。
2、解压内核
cd /usr/src
tar -jxvf linux-source-2.6.38.tar.bz2
将内核解压到/usr/src
3、修改文件
a)/usr/src/linux-source-2.6.38/kernel/sys.c
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/kernel/sys.c
在文件最后添加
asmlinkage int sys_mycall(int number)
{
printk("This is my first system call!!!hahahaha!!");
return number;
}
b)/usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S
然后在一列 .long sys_XXXX的下一行添加
.long sys_mycall
并记住他们分别是第几个.long sys_XXXX
c)/usr/src/linux-source-2.6.38/arch/x86/include/asm/unistd_32.h
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/arch/x86/include/asm/unistd_32.h
在一列#define __NR_XXXX NNN后添加几行
#define __NR_mycall 341
注意后面那个数字是接着上面那几行下来的
4、编译内核
关于内核编译,我在上一篇文章里面已经讲了,自己照上面的做就是了,下面是文章的链接:
《Ubuntu10.10下编译内核linux-2.6.38成功》
5、重启
重启ubuntu,如果能进入系统,证明基本上没问题了。
打开终端输入
uname -r
查看版本号,如果是2.6.38就可以安心了
6、检查系统调用
随便写个函数试试看吧
在main函数中使用syscall(函数号,参数)测试系统调用
比如
#include <linux/unistd.h>
#include <stdio.h>
main(){
printf("The number is %d/n",syscall(341,100));
}
出现如下输出:The number is 100
编译运行,然后打开终端输入
sudo dmesg -c
查看最后一行是否有添加系统调用成功信息:
如果有 "This is my first system call!!!hahahaha!!"
说明系统调用添加成功了!!
- ubuntu 10.10 添加系统调用全过程
- ubuntu添加系统调用
- ubuntu 10.10 添加系统调用的方法
- ubuntu 10.10 添加系统调用的方法
- ubuntu 10.10 添加系统调用的方法
- ubuntu 10.10 添加系统调用的方法
- 系统调用全过程分析
- 系统调用open全过程
- ubuntu linux14.04添加系统调用
- 添加Linux系统调用(ubuntu, 3.13.0)
- ubuntu linux14.04添加系统调用
- Ubuntu 12.04内核升级和添加系统调用
- Ubuntu 14.04 内核版本Linux 3.13 添加系统调用
- linux系统调用mount全过程分析
- linux系统调用mount全过程分析
- linux系统调用mount全过程分析
- 安装 Ubuntu 9.10 服务器版本系统全过程
- 内核添加系统调用
- TCP三次握手/四次挥手
- JDBC连接sybase数据库
- 模板编译模型
- SQLiteOpenHelper的使用
- 破解Excel受保护文件
- ubuntu 10.10 添加系统调用全过程
- AntTweakBar
- 站长常用的200个js代码
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- 判断当前是横屏还是竖屏
- UNIX网络编程----多线程echo服务器与客户端
- grails之殇
- Executor并发框架
- VC 文件的解压和压缩操作