ubuntu 10.10 添加系统调用全过程

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!!"

说明系统调用添加成功了!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值