SOCKET使用者介面與系統呼叫關係(2)

2021-08-07 16:54:03 字數 604 閱讀 3797

上一節中講述了socket呼叫的總入口sys_socketcall的巨集定義形式,該定義形式還廣泛用於其他介面api。現在我們來看看sys_socketcall的實現方式。

在net/socket.c 中,sys_socketcall的實現如下:

2465~2466 api序號鑑定,需要在socket 介面呼叫範圍內。

2468~2470 根據api序號取得該api的引數個數,nargs陣列中定義。

2472~2474 將引數從使用者態args拷到核心態a中。

2476~2478 是selinux的一些鑑權過程,可以忽略。

2480~2561 是根據對應的api序號進行呼叫,並將引數強制型別轉換為對應api需要的引數型別。

形如 sys_socket 這樣的函式,在net/socket.c是找不到定義的。他的定義需要用到上一節說的方法,其定義如下:syscall_define3(socket, int, family, int, type, int, protocol)

其他api類似,且都在net/socket.c中定義。

SOCKET使用者介面與系統呼叫關係

所有的socket系統呼叫的總入口是sys socketcall 在include linux syscalls.h中定義 其中,param call 標識介面編號,param args 是介面引數指標 介面編號的定義在 include uapi linux net.h中定義 介面編號對應的引數個數...

Socket 與系統呼叫深度分析

本次實驗主要從以下幾個方面對socket和系統呼叫之間的關係 socket api 和 系統呼叫關係 系統呼叫機制 socket相關系統呼叫核心函式和跟蹤驗證 系統呼叫一般發生在中斷的時候。當中斷發生時,系統就會進入核心態指向相關的系統呼叫。相信考過408的同學對下圖應該是很熟悉的。這個圖大概的描述...

Socket與系統呼叫深度分析

一 系統呼叫 由於需要限制不同的程式之間的訪問能力,防止他們獲取別的程式的記憶體資料,或者獲取外圍裝置的資料,併發送到網路,cpu劃分出兩個許可權等級 使用者態和核心態。核心態 cpu可以訪問記憶體的所有資料,包括外圍裝置,例如硬碟,網絡卡,cpu也可以將自己從乙個程式切換到另乙個程式。使用者態 只...