码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-08-13 21:44:15      阅读:131      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!