linux系統中添加系統是怎樣調用的?從linux基礎入門學習出發,一起來看看:
1、每個體系下面均有對應的系統調用列表:
arch/arm/kernel/calls.S
在添加一個新的系統調用標號
CALL(sys_my_call) //系統調用號366
添加sys_my_call()
在內核源代碼的kernel目錄下的sys.c中增加該系統調用函數接口:
SYSCALL_DEFINE0(my_call)
{
printk("hello my_call!n"); //內核中的打印接口printk
}
備注:
SYSCALL_DEFINE0 該宏用與定義一個不帶參數的系統調用sys_xxx()
SYSCALL_DEFINE1 該宏用與定義一個帶一個參數的系統調用
SYSCALL_DEFINEn
2、修改系統調用函數聲明文件:
include/linux/syscalls.h
添加新系統調用的聲明
asmlinkage long sys_my_call(void);
3、添加新系統調用的調用號聲明:
arch/arm/include/asm/unistd.h
添加新系統調用號的聲明
#define __NR_my_call (__NR_SYSCALL_BASE + 366)
4、重新編譯內核并更換新內核。
系統調用測試:
編寫應用程序
sys_call.c
#include <stdio.h>
#include <linux/unistd.h>
#include <sys/syscall.h>
#define __NR_my_call (__NR_SYSCALL_BASE + 366)
int main(int argc, char **argv)
{
syscall(__NR_my_call);
return 0;
}
交叉編譯:
arm-linux-gcc sys_call.c -o sys_call
將交叉編譯后的程序下載到開發板:
使用CRT的串口傳輸功能:
1、在進入開發板文件系統后,輸入:
rx sys_call
并回車確認,選擇下載到板子的應用程序,模式Xmodem
2、下載成功后修改可執行屬性:
chmod 777 sys_call
3、執行
linux基礎入門學習到粵嵌教育,教學課程涵蓋了嵌入式基礎、項目分析與立項、Linux核心操作與算法、嵌入式Linux系統編程開發、嵌入式GUI系統編程開發、ARM開發、嵌入式底層驅動開發、項目優化與驗收再到就業與創業指導。