通常新增系統呼叫有兩種方案:
* 重新編譯核心
* 新增核心模組
此處我們採用重新編譯核心的方式增加系統呼叫。
實驗環境:x86_64 gnu/linux 4.15.0 ubuntu18.04
將其拷貝到/usr/src目錄下
cp linux-4.19.1.tar.xz /usr/src/
解壓縮並鏈結
xz -cd linux-4.19.1.tar.xz| tar xvf -
解壓縮後出現linux-4.19.1目錄,此時我們建立乙個名為linux的目錄,將linux軟連線到linux-4.19.1,命令如下:
ln -s linux-4.19.1 linux
新增系統呼叫
共x個檔案,此時目錄為/usr/src/linux
arch/x86/entry/syscalls/syscall_64.tbl //設定系統呼叫號,如果是32位就用syscall_32.tbl
include/linux/syscalls.h //系統呼叫的標頭檔案
kernel/sys.c //定義系統呼叫函式
設定系統呼叫號
vim arch/x86/entry/syscalls/syscall_64.tbl
標頭檔案中新增宣告
vim include/linux/syscalls.h
定義系統呼叫函式
vim kernel/sys.c
在標頭檔案中新增linkage.h
新增函式定義,此處函式為輸出「operating system work1 succeed!」
重新編譯核心,此處可以參考文件linux核心編譯
重啟後編寫測試檔案
hello.c 檔案如下
#define _gnu_source
#include#include#include#include#includeint main()
編譯該檔案:
gcc hello.c -o hello
執行該檔案
./hello
用dmesg檢視是否成功
dmesg
輸出"operating system work1 succed!"表示成功!
(當然還參考了許多其他的部落格,可都沒什麼用!)
linux 新增系統呼叫
此文於2010 02 26被推薦到csdn首頁 如何被推薦?新的建立檔案描述符的 syscall 一般都支援額外的 flags 引數,可以直接指定 o nonblock 和 fd cloexec,例如 以上 6 個 syscalls,除了最後乙個是新功能,其餘的都是增強原有的呼叫,把數字尾號去掉就是...
Linux新增系統呼叫
修改核心 新增函式,新增函式宣告以及新增系統呼叫id,來實現給自己編譯的核心新增系統呼叫。當然這個過程是在編譯核心之前完成的,核心編譯過程請參照linux核心編譯 進入解壓的檔案目錄 cd usr src linux 5.1 kernel在sys.c中新增函式 執行vim sys.c使用vim開啟s...
為linux新增系統呼叫
這篇文章簡單的介紹了如何為linux新增乙個系統呼叫。也就是為linux增加乙個api函式。通過這篇文章,應該學會如何 簡單的修改linux源 編譯核心。首先 1 cd usr src linux kernel a linkage int sys mycall int num 3.cd usr sr...