為linux新增系統呼叫

2021-04-01 05:14:20 字數 1226 閱讀 6315

這篇文章簡單的介紹了如何為linux新增乙個系統呼叫。也就是為linux增加乙個api函式。通過這篇文章,應該學會如何 簡單的修改linux源**、編譯核心。

首先:1:  cd  /usr/src/linux/kernel

a**linkage int sys_mycall(int num)

3.  cd /usr/src/linux/arch/i386/kernel

4:  vi entry.s  並新增如下**

.long symbol_name(sys_mycall)

5.  在標頭檔案中增加申明:

cd /usr/include/a**

vi unistd.h

新增:   #define __nr_mycall     222

ok , 以下開始編譯核心。

make mrproper

make menuconfig

make dep

make bzimage

make modules

make  modules_install

編譯完成後,將新核心檔案和新的系統符號表拷貝到/boot目錄,如下:

cp /usr/src/linux/arch/i386/boot/bzimage /boot/bzimage-new

cp  /usr/src/linux/system.map  /boot/system.map-new

ln -sf /bbot/system.map-new /boot/system.map

下面開始配置lilo(/etc 目錄下):

新lilo.conf檔案如下:

default = linux-new

image = /boot/bzimage-2.4.7

label=linux-new

..........(略)

然後使用超級使用者執行 /sbin/lilo

好,重新啟動 。 reboot

重新啟動機器後,我們來編寫乙個測試程式來呼叫我們剛才新增的api。如下test.c:

#include ///-----看見這裡了吧

_syscall1(int,mycall,int,ret)   申明系統呼叫

main()

printf("%d  /n",mycall(100));

存檔編譯。

gcc -o  test test.c

編譯好執行。

:)    -----全文玩

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新增系統呼叫

通常新增系統呼叫有兩種方案 重新編譯核心 新增核心模組 此處我們採用重新編譯核心的方式增加系統呼叫。實驗環境 x86 64 gnu linux 4.15.0 ubuntu18.04 將其拷貝到 usr src目錄下 cp linux 4.19.1.tar.xz usr src 解壓縮並鏈結 xz c...