03 系統呼叫 核心處理流程

2021-10-23 09:35:01 字數 1390 閱讀 7030

核心版本:v2.6.38

體系架構:arm

參考:檔名說明

系統呼叫介面宣告

系統呼叫號定義

arch/arm/kernel/calls.s系統呼叫表內容

arch/arm/kernel/entry-common.s系統呼叫表定義、系統呼叫入口定義

/* 異常向量表:arch/arm/kernel/entry-armv.s */

__vectors_start:

/* 軟中斷(svc異常)處理函式:arch/arm/kernel/entry-common.s */

vector_swi:

addne scno, r7, #__nr_syscall_base

adr tbl, sys_call_table @ load syscall table pointer

adr lr,

bsym

(ret_fast_syscall) @ return address

ldrcc pc,

[tbl, scno, lsl #2

] @ call sys_* routine

異常向量表掛接

/* file: arch/arm/kernel/traps.c

* start_kernel => setup_arch => early_trap_init

*/void __init early_trap_init

(void

)

/* file: arch/arm/kernel/entry-common.s */

.equ nr_syscalls,

0#define call(x) .equ nr_syscalls,nr_syscalls+1

#include

"calls.s"

/* 以上**計算了系統呼叫個數nr_syscalls

*(等效c語言:#define nr_syscalls ...) */

/* 以下**定義了系統呼叫表sys_call_table

*(等效c語言:long sys_call_table=; */

#undef call

#define call(x) .long x

.type sys_call_table, #object

entry

(sys_call_table)

#include

"calls.s"

03系統呼叫

1 系統呼叫的作用 系統呼叫是使用者空間訪問核心的唯一手段,除異常和陷入外,它們是核心唯一的合法入口。系統呼叫在使用者空間程序和硬體裝置之間新增了乙個中間層。它有三個作用 2 api posix和c庫的關係 一般應用程式通過使用者空間實現的應用程式設計介面 api 而不是直接通過系統呼叫來程式設計。...

系統呼叫流程

總體流程 kill kill.s swi陷入核心態 從sys call table檢視到sys kill ret fast syscall 回到使用者態執行kill 下一行 詳細過程概述 使用者程式在使用者空間通過軟中斷swi指令切入核心臺,執行vector swi處指令 這個指令產生軟體中斷,ve...

SpringMVC核心處理流程

springmvc流程圖 具體步驟 第一步 發起請求到前端控制器 dispatcherservlet 第四步 前端控制器呼叫處理器介面卡去執行handler 第五步 處理器介面卡handleradapter將會根據適配的結果去執行handler 第六步 handler執行完成給介面卡返回modela...