這篇文章簡單的介紹了如何為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...