向linux内核增加新的系统调用,为linux内核添加新的系统调用
為linux內(nèi)核添加新的系統(tǒng)調(diào)用
作者:李志勇
更多精彩:
更多精彩:
開發(fā)平臺:x86 ubuntu
目標(biāo)平臺:S3C6410
linux3.4.4
一、? ? 打開內(nèi)核源碼目錄下arch/arm/kernel/calls.S文件,在389行添加:
/*
378 */
CALL(sys_my_syscall)
378是新添加的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用號,sys_my_syscall是該系調(diào)用的名字
二、打開內(nèi)核源碼目錄下arch/arm/include/asm/unistd.h文件,在407行添加:
#define __NR_my_syscall? ?? ?? ???(__NR_SYSCALL_BASE+378)
my_syscall是新系統(tǒng)調(diào)用的名字,378是系統(tǒng)調(diào)用號
三、打開內(nèi)核源碼目錄下arch/arm/kernel/sys_arm.c文件,在最后添加:
asmlinkage long sys_my_syscall(int a, int b)
{
return a +
b;
}
這個(gè)就是系統(tǒng)調(diào)用的實(shí)現(xiàn),在這里簡單的寫一個(gè)加法為例
四、重新編譯內(nèi)核,啟動內(nèi)核并掛在網(wǎng)絡(luò)文件系統(tǒng),掛在成功后:
[lzy@uplooking]#
五、在用戶態(tài)測試新添加的系統(tǒng)調(diào)用my_syscall
#include
< stdio.h>
int main(int argc, char *argv[])
{
int
add;
add = syscall(378, 1, 2);
printf("add =
%d\n", add);
return
0;
}
其中387是新添加的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用號
編譯并把可執(zhí)行文件拷貝到/nfsroot,/nfsroot是開發(fā)板的根目錄
lizhiyong@ThinkPad:/home/test$
arm-linux-gcc my_syscall.c -o my_syscall
lizhiyong@ThinkPad:/home/test$ cp
my_syscall /nfsroot
在開發(fā)板上執(zhí)行my_syscall,運(yùn)行結(jié)果如下:
[lzy@uplooking]#
./my_syscall
add=3
更多精彩:
閱讀(604) | 評論(1) | 轉(zhuǎn)發(fā)(0) |
總結(jié)
以上是生活随笔為你收集整理的向linux内核增加新的系统调用,为linux内核添加新的系统调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红姜黄减肥有效吗
- 下一篇: linux可疑程序,linux可疑程序追