linux核心雜記 15 系統呼叫(2

2021-10-13 07:54:10 字數 797 閱讀 9459

1、核心在執行系統呼叫時,處於程序上下文狀態,current指標指向呼叫 系統呼叫的程序。

2、在程序上下文中

(1)核心可休眠(比如在系統呼叫阻塞或顯式呼叫 schedule()時)。

休眠說明系統呼叫可使用核心提供的絕大部分功能。

(2)核心可被搶占

就像使用者空間內的程序一樣,當前程序同樣可被其它程序搶占。因為新的程序要使用相同的系統呼叫,所以必須小心,保證該系統是可重入。

當系統呼叫 返回時,控制權仍然在system_call()中,它最終會切換到使用者空間,讓使用者程序繼續執行

3、系統呼叫的繫結:

系統呼叫必須編譯進核心,不能編譯成模組

以sys_mytest 為例

(1)在系統呼叫表中最後加入一項,觀察其最後一項呼叫號多少,一般加1即可,從0開始編號

在entry.s中

entry

(sys_call_table)

.long sys_restart_syscall/*0*/..

..long sys_recvmsg/*337*/

.long sys_mytest

(2)將系統呼叫號加入

#define __nr_mytest 338

(3)實現mytest()呼叫

kernel/sys.c 檔案中(也可根據其功能放入聯絡最緊密的**中)

#include

asmlinkage long

sys_mytest

(void

)

linux核心雜記 13 系統呼叫(1

1 系統呼叫 在使用者空間程序和硬體 裝置之間增加了一具中間層。其作用如下 1 為使用者空間提供了一種硬體 的抽象介面。2 保證了系統的穩定 和安全 3 每個程序 執行在虛擬系統中,而在使用者空間和系統的其餘部分提供這樣一層公共介面。2 系統呼叫是使用者空間訪問核心的唯一手段,不能直接呼叫核心函式 ...

linux核心之系統呼叫

應用程式與系統呼叫 使用者應用程式訪問並使用核心所提供的各種服務的途徑,就是系統呼叫,系統呼叫介面層作為核心和使用者應用程式之間的中間層,扮演了乙個橋梁,系統呼叫把應用程式的請求傳達給核心,核心處理完後,把結果返回給應用程式。應用程式通過作業系統提供的應用程式設計介面api而不是直接通過系統呼叫來程...

Linux核心之系統呼叫

linux核心之系統呼叫 1.應用程式通過api而不是直接呼叫系統呼叫來程式設計 2.getpid 系統呼叫示例 asmlinkage long sys getpid void asmlinkage 編譯器僅從棧中提取引數 系統呼叫的命名規則 sys syscallname 3.每個系統呼叫都對應乙...