首页 > 系统服务 > 详细

在linux内核中实现自己的系统调用

时间:2015-08-13 21:41:33      阅读:314      评论:0      收藏:0      [点我收藏+]

如实现一个简单的打印:printk

1.

vim printk.c
void sys_pk()
{
printk("this is a new sys call");
}

cd arch/arm/kernel

2.vim calls.S
在最后面加上
Call(sys_pk)

3.cd arch/arm/include

在文件Unistd.h在合适的位置中添加如下几行:

vim Unistd.h

在最后面加上:
#define __NR_pk (__NR_SYSCALL_BASE+363)

4.对内核进行重新编译

make clean

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

cp uImage /rootfs

tftp 0xc0008000 uImage

bootm 0xc0008000

5.使用新添加的系统调用

vim syscall.c

void pk()

{

__asm__ (
"ldr r7,=363(超过8位不能使用mov指令)\n"
"swi\n"
:
:
:"memory")
};
}
void main()
{
pk();

}

}

6.编译链接c文件

arm-linux-gcc -static syscall.c -o syscall

cp syscall /rootfs

 

在linux内核中实现自己的系统调用

原文:http://www.cnblogs.com/defen/p/4728403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!