Kernel-Modules
核心模組參數 vs /sys/class/… 解釋
我正在製作(我的第一個)核心模組來使用我的Pandas板的 gpio 引腳和中斷。
已經“內置”,我注意到你可以(簡要地)
cd /sys/class/gpio echo 138 > export # a file gpio138 appears echo out > gpio138/direction echo 1 > gpio138/value
在連接器引腳上打開一些電壓高或低。
同樣,在核心模組上,您有模組參數,
echo 3 > /sys/module/my_module/parameters/delay_seconds
例如我的問題:
- 什麼處理 /sys/class/gpio ?核心模組?一個司機 ?
- 無論 1. 是什麼,核心模組中是否可以有更複雜的模組參數,以及一些目錄結構?就像一個包含延遲參數的“延遲”目錄,…
/sys/module/my_module/parameters/delays/delay_led1_seconds
- 您可以在路徑 /sys/module/my_module/parameters/… 之外的其他位置獲取參數嗎?(例如 /sys/class/a_name/…)
- 當您寫入時,gpio 事物如何在 /sys/class/gpio 中創建新/刪除文件
[un]export
?
1)什麼處理 /sys/class/gpio ?核心模組?一個司機 ?
它是一個類似於目錄的核心介面。
/proc
2)核心模組中是否可以有更複雜的模組參數,具有一些目錄結構?就像一個包含延遲參數的“延遲”目錄
是的; 有些東西
/proc
確實/sys
使用目錄層次結構。但是,如果要修改或擴展它們,則必須修改核心。#3 有一個類似的答案——要進行更改,您需要更改相關的核心程式碼。
- gpio 事物如何在您寫入時在 /sys/class/gpio 中創建新/刪除文件
$$ un $$出口 ?
這些不是磁碟上的文件,它們只是系統介面。1 當您從 procfs 或 sysfs 文件中讀取數據時,您實際上是在向核心請求資訊。然後將數據格式化並返回。它可能不會以您看到的形式儲存在任何地方,儘管它的一部分可能儲存在核心中。
當您寫入這樣的文件時——並非所有文件都允許這樣做——您正在向核心發送請求以執行特定的操作。這可以包括,例如,啟動或擴展 GPIO 介面。
1.無論如何
read
,write
呼叫總是系統呼叫,因為普通文件通常在磁碟上,並且需要核心來訪問硬體。因此在這裡使用文件系統風格的 API 是很自然的;即使它們不是“真實文件”,訪問它們所代表的任何資源也必須涉及系統呼叫。