Linux新增系統呼叫

2022-01-10 16:37:02 字數 1451 閱讀 3246

通常新增系統呼叫有兩種方案:

* 重新編譯核心

* 新增核心模組

此處我們採用重新編譯核心的方式增加系統呼叫。

實驗環境: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...