如何添加linux系统调用

1、准备

环境使用:linux-2.6.32.2-mini2440-20100921.tar.gz

硬件环境:mini2440

配套软件:mini2440-u-boot、rdisk.gz(文件系统)、redhat 5

2、实验

2.1、首先解压在redhat 5中解压llinux-2.6.32.2-mini2440-20100921.tar.gz

mkdir /home/work/core

cp linux-2.6.32.2-mini2440-20100921.tar.gz /home/work/core

cd /home/work/core

tar -xzvf linux-2.6.32.2-mini2440-20100921.tar.gz

2.2、修改内核文件

2.2.1、修改 arch/arm/include/asm/unistd.h

vim arch/arm/include/asm/unistd.h

在最后添加一行

如#define __NR_call_add                   (__NR_SYSCALL_BASE+365)

2.2.2、在arch/arm/kerne/sys_arm.c中添加测试内核程序

下面的程序只是个测试程序,

smlinkage int sys_add(int a, int b)
{
        return a + b;
}

2.2.3、注册内核调用

在arch/arm/kernel/call.S中添加注册信息

vim arch/arm/kernel/call.S

添加内容为:CALL(sys_add)       //sys_add 是测试程序的函数名

 

2.3、编译内核

选择内核一般配置,编译生成zImage,然后使用u_boot生成uImage,然后

将u_boot,uImage以及rdisk.gz全部加载到mini2440中去

2.4、程序测试

编写一个C程序

如test.c:

#include <stdio.h>

#include <linux/unistd.h>

_syscall2(int, sys_add, int, a, int, b);

main()
{
int result;
result = sys_add(5, 4);

     printf("result = ", result);
}

将其放到mini2440板子上,使用编译之后即可运行,也可以在redhat 5中编译之后将编译产生的文件放到上面即可使用./test来执行、

结果为:result=11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值