驅動介面函式呼叫過程

2022-08-14 22:12:12 字數 986 閱讀 5580

首先我們來反彙編讀驅動的程式:

跳轉到__libc_read

,發現他把

r7賦值給3,

3是傳過去的引數,然後呼叫

svc指令,進入核心態相應的入口:

接下來就已經進入核心態,入口函式中將存入r7中的3

取出。

然後載入一張表,表名是sys_call_call,

根據這個表中內容,斷定

3到底是對應什麼操作:

這個表如下,可以看出表中第三項對應call(sys_read)

,也就是說傳進的引數

3代表要執行

sys_read對應函式實現如下圖:

其中的vfs_read

實現如下圖,他獲取了要讀的那個檔案的

file

物件,然後呼叫

file->f_op->read

,這正是我們寫驅動的時候編寫的介面函式:

來自為知筆記(wiz)

驅動呼叫過程

驅動呼叫過程 剛接觸到linux下驅動程式設計,一般都是照著模式寫 或是修改一下已有原始碼,對驅動的呼叫過程並不是很熟悉。在網上不斷的 算是有點明白了,現在我就說下自己的了解。我們載入驅動模組後都會做乙個工作,就是通過mknod在 dev資料夾下建立乙個裝置檔案 如mknod dev c major...

函式呼叫過程

每乙個未執行完的函式都對應著乙個棧幀,系統為單個函式分配的那部分棧空間就叫做棧幀,棧幀儲存了函式的資訊。以下面的 為例,通過彙編 的執行過程介紹棧幀建立和銷毀的過程 include int add int x,int y int main 從main函式建立自己的棧幀開始 其他內容先忽略 初始狀態 ...

函式呼叫過程

c語言種有三種迴圈 do.while while for 初始化 條件判斷 步進 主函式 main 庫函式自定義函式函式的發明,使得變成可以以函式為單位進行模組化,叫做面向過程。軟體工程中,有 高內聚,低耦合 的要求。函式就是為了實現以上要求發明的產物。函式是面向過程的 介面 其介面包含了 引數 返...