私が読んでいるLinuxカーネルモジュールプログラミングガイドデバイスドライバの動作が少し混乱しています。
私は/proc/devicesに表示されるデフォルトのデバイスドライバに沿って作成しました。これは素晴らしいです。ガイドによると、Linuxのドライバと対話するために、ユーザースペースプログラムは/ dev /にあるデバイスのデバイスファイルと対話できます。しかし、今私が書いたモジュールはデバイスファイルを生成しません。新しいファイル生成を管理するには?これはmodule_initで何をすべきですか?
C ++プログラムなどのドライバと対話するデバイスファイルを作成したと仮定すると、fstreamを開いてファイルを読み書きできますか?それとも、ユーザー空間でデバイスファイルと対話するための特定のライブラリがありますか? ?
答え1
のファイルは、主にソケットから受信してカーネルからイベントを受信する/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
オンラインで説明があります第14章.pdf~のLinuxデバイスドライバ、第3版
2005年から、Linuxデバイスモデル。ちょっと昔ながらで、netlink
例えば言及しません。