歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 框架之創建設備節點文件

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()創建設備節點。

Copyright © Linux教程網 All Rights Reserved