新版Linux核心新增系統呼叫的方法

2021-06-05 02:30:41 字數 1091 閱讀 1108

在linux-3.2.11/kernel下建立mysyscall.c檔案,內容如下:

#include asmlinkage long sys_mysyscall(void)
在linux-3.2.11/kernel/makefile中加入:

obj-y += mysyscall.o

在linux-3.2.11/include/linux/syscalls.h中加入:

asmlinkage long sys_mysyscall(void);

在linux-3.2.11/arch/x86/kernel/syscall_table_32.s(如果你編譯的是64位機器則32替換為64)中加入:

.long sys_mysyscall
在linux-3.2.11/arch/x86/ia32/ia32entry.s中加入:
.quad sys_mysyscall

在linux-3.2.11/arch/x86/include/asm/unistd_32.h中加入:

#define __nr_mysyscall          349
並將
#define nr_syscalls 349
替換為

#define nr_syscalls 350
(這裡根據實際情況,__nr_mysyscall為現有最大值,nr_syscalls加一即可)

重新編譯、安裝、重啟

檢視/proc/kallsyms中是否有mysyscall,如果有,表示符號已經匯出。

編寫測試程式:

#include #include #include #include int main()
編譯執行,輸出0即為正確,-1為錯誤。

若執行正確,用dmesg檢視,末尾有輸出:this is my sys call!

新版Linux核心新增系統呼叫的方法

在linux 3.2.11 kernel下建立mysyscall.c檔案,內容如下 include asmlinkage long sys mysyscall void 在linux 3.2.11 kernel makefile中加入 obj y mysyscall.o 在linux 3.2.11 ...

Linux 核心編譯 新增系統呼叫

主機 ubuntu 11.04 現在核心版本 2.6.38.9 編譯的目標核心版本 2.6.39 編譯成功後修改核心,新增個系統呼叫,並重新編譯核心,編寫c程式,呼叫自己新增的系統呼叫 首先編譯核心 2 解壓核心到任意目錄 這裡不用必須解壓到 usr src 下,linus也說不必那樣做,況且自己也...

核心新增系統呼叫

在 windows 下新增系統呼叫不像 linux 那樣容易,windows 系統呼叫與使用者程式之間還有 ntdll.dll 層,而這一層微軟沒有提供源 但是我們從系統呼叫的實現機制出發,不管是在 linux 還是windows 系統呼叫的實現都是通過中斷來實現的,可以利用中斷的方式呼叫新新增的系...