Linux
設備文件來自哪裡?
我正在閱讀Linux 核心模組程式指南,我對設備驅動程序的工作方式有些困惑。
我嘗試跟隨並製作一個基本的設備驅動程序,它顯示在 /proc/devices 中,這很棒。根據該指南,要與 Linux 中的驅動程序互動,使用者空間程序可以與 /dev/ 中該設備的設備文件進行互動。不過現在,我編寫的模組不會生成設備文件。什麼管理新文件的生成?這是我應該在 module_init 中做的事情嗎?
假設我已經製作了一個設備文件,正在與驅動程序互動,比如一個 C++ 程序,只是打開一個 fstream 並讀取或寫入該文件,或者是否有特定的庫用於與使用者空間中的設備文件互動?
中的文件
/dev
主要由通過偵聽套接字udev
從核心接收事件的程序創建(參見 參考資料)。當創建新的核心對象 (kobject) 時發送事件。這些對像也可以在sysfs 文件系統中看到。特別是,子樹中命名的文件包含用於給定設備的節點的主要和次要編號。例如netlink``NETLINK_KOBJECT_UEVENT``man 7 netlink``/sys``dev``/sys/devices
$ cat /sys/devices/pnp0/00:05/tty/ttyS0/dev 4:64
這在Linux Device Drivers, Third Edition from 2005, The Linux Device Model的線上第 14 章 pdf中有解釋。它有點過時,例如沒有提及。
netlink