向linux内核增加新的系统调用,为linux内核添加新的系统调用
為linux內核添加新的系統調用
作者:李志勇
更多精彩:
更多精彩:
開發平臺:x86 ubuntu
目標平臺:S3C6410
linux3.4.4
一、? ? 打開內核源碼目錄下arch/arm/kernel/calls.S文件,在389行添加:
/*
378 */
CALL(sys_my_syscall)
378是新添加的系統調用的系統調用號,sys_my_syscall是該系調用的名字
二、打開內核源碼目錄下arch/arm/include/asm/unistd.h文件,在407行添加:
#define __NR_my_syscall? ?? ?? ???(__NR_SYSCALL_BASE+378)
my_syscall是新系統調用的名字,378是系統調用號
三、打開內核源碼目錄下arch/arm/kernel/sys_arm.c文件,在最后添加:
asmlinkage long sys_my_syscall(int a, int b)
{
return a +
b;
}
這個就是系統調用的實現,在這里簡單的寫一個加法為例
四、重新編譯內核,啟動內核并掛在網絡文件系統,掛在成功后:
[lzy@uplooking]#
五、在用戶態測試新添加的系統調用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是新添加的系統調用的系統調用號
編譯并把可執行文件拷貝到/nfsroot,/nfsroot是開發板的根目錄
lizhiyong@ThinkPad:/home/test$
arm-linux-gcc my_syscall.c -o my_syscall
lizhiyong@ThinkPad:/home/test$ cp
my_syscall /nfsroot
在開發板上執行my_syscall,運行結果如下:
[lzy@uplooking]#
./my_syscall
add=3
更多精彩:
閱讀(604) | 評論(1) | 轉發(0) |
總結
以上是生活随笔為你收集整理的向linux内核增加新的系统调用,为linux内核添加新的系统调用的全部內容,希望文章能夠幫你解決所遇到的問題。