歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

《Linux設計與實現》筆記——系統調用工作原理、添加系統調用的過程

系統調用的意義

為了和用戶空間上的進程進行交互,內核提供的提供的一組接口。
應用程序通過這組接口訪問硬件和其他操作系統資源。
完成對硬件和資源訪問的控制。安全、可靠,多任務、虛擬必須
硬件設備的抽象(提供設備的獨立性)。

異常,陷入,系統調用 : 用戶空間進入內核空間的三種方式

原理

這裡寫圖片描述
sys_write會根據系統write輸出的文件,調用相應struct file ,operations中的write方法。

添加系統調用的過程

以kernel 2.6.11為例 long my_syscall(int i);

下載kernel 2.6的內核源碼,切換到根目錄 在/arch/i386/kernel/entry.S中sys_call_table最後添加 .long my_syscall 在/ include/asm-i386/unistd.h中的最後添加系統調用編號
#define __NR_my_syscall 338將NR_syscalls 數值+1 在/arch/i386/kernel/sys_i386.c文件添加系統調用的實現(不用修改mkefile)
asmlinkage long sys_my_syscall(int i){} 編寫用戶程序
#include
#include
#define __NR_my_syscall 338
_syscall1(long, my_syscall, int, i)
Int main(){
        Int a = my_syscall(5);
}
編譯內核,重新啟動
Copyright © Linux教程網 All Rights Reserved