Android 框架之建立裝置節點檔案

2021-07-10 10:48:10 字數 720 閱讀 5222

android 與linux一樣使用裝置驅動來訪問硬體裝置,裝置節點檔案是裝置驅動的邏輯檔案,應用程式使用裝置節點檔案來訪問裝置驅動程式,linux使用mknod來建立裝置節點檔案,android 有自己法子。

android 使用init 程序來建立裝置節點檔案,分兩種情況:靜態節點檔案和動態節點檔案,以應對已經定義好的冷插拔和系統執行起來後插入的熱插拔裝置。

對於冷插拔裝置,init 程序事先獲取等待冷插拔處理的驅動程式,事先定義好個驅動的裝置節點檔案(在android_source_code/system/core/init/devices.c中),在struct perms_devices[ ] 列出了裝置節點的名稱。訪問許可權,使用者id,組id,若要新增新的使用者定義的新裝置需要在此結構體中新增相應資訊。

init 首先呼叫device_init() 函式,建立乙個socket 來接收uevent,再通過cold_boot() 呼叫do_coldboot()對核心啟動時註冊到/sys下的驅動程式進行冷插拔處理,do_coldboot會啟動uevent,在handler_device_fd()中接收uevent資訊,並寫入到uevent struct 中,呼叫handle_device_event()建立節點檔案,先建立所有的子目錄,然後呼叫make_device()建立節點檔案。

init 對於熱插拔的動態裝置,使用事件處理迴圈來完成,使用poll()監聽來自驅動程式的uevent, 然後呼叫handle_device_fd()建立裝置節點。

linux DEVICE ATTR建立裝置節點程式

一 簡述 通過device attr建立裝置節點,可以完成一些簡單的驅動的測試工作,可以向節點做echo cat相關的操作。二 如下 1 驅動 include include include include include 執行cat會呼叫到此函式 static ssize t hello test...

建立裝置例程

昨天寫了最最簡單的驅動,乙個c檔案,乙個makefile,乙個sources,就行了,今天要向c檔案中新增更多的東西,首先第一就是裝置建立。裝置建立很簡單,第一步,建立裝置名稱,第二步,建立裝置,第三部建立符號鏈結。當然其中最重要的乙個函式就是建立裝置iocreatedevice 了。總共七個引數,...

建立裝置節點

書中所使用的是mknod命令手動建立節點,事實上有一組函式支援自動建立裝置節點。核心中定義了struct class結構體,乙個struct class結構體變數對應乙個類,核心提供了class create巨集來建立乙個類。呼叫class create會在 sys class目錄下生成乙個目錄,接...