如何添加linux系统调用
2011-07-14 11:25
609 查看
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
环境使用: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
相关文章推荐
- 如何在arm linux kernel(内核)中添加系统调用
- 如何在Linux中添加新的系统调用
- 转 - 如何在Linux中添加新的系统调用
- 【转载】如何在Linux系统中添加新的系统调用
- 如何在Linux中添加新的系统调用
- 如何在Linux 4.12内核添加系统调用
- 如何在Linux中添加新的系统调用
- Linux下如何添加系统调用
- 如何在Linux系统中添加新的系统调用
- 如何在Linux 4.12内核添加系统调用
- 如何在Linux中添加新的系统调用
- 【Linux】Linux添加系统调用以及内核编译过程
- Linux系统中如何添加自己的库文件路径
- Linux-0.11内核学习笔记【2】:添加系统调用
- Linux 内核编译 添加系统调用
- Linux添加内核系统调用报告
- Linux添加一个新的系统调用
- 添加自定义Linux系统调用
- 怎么在Linux中添加新的系统调用
- 树莓派1代·添加一个linux系统调用·编译内核