私が見つけたキャラクターデバイスドライバーに関するすべての本/記事/チュートリアル/例を読んで、それらはすべて私のドライバーコードでメジャー番号を取得する方法をカバーしており、alloc_chrdev_region()
を呼び出すことによって動的に取得することを示唆しています。実際のデバイスノードを作成するために、それらはすべて、手動またはスクリプトのいずれかで、ドライバーコードの外部でmknod
を呼び出すように指示します。ある参照では、ドライバーにメジャー番号を印刷してもらいたいと考えています。別の人は、_/proc/devices
_でawk
を使用してメジャー番号を見つけることを望んでいます。関数mknod()
についての言及がありますが、ユーザーランドコードでの使用を目的としているようです。
ドライバーを自己完結させる方法がない理由がわからないため、明らかに何かが欠けています。つまり、_modprobe my_driver
_を実行すると、たとえば_/dev/my_driver
_が作成されずに作成されてしまいます。他に何かしなければならない。
コマンドペアdevice_createとclass_createは、Linuxでこのトリックを実行します。チェック https://stackoverflow.com/questions/5970595/create-a-device-node-in-code
Unixは伝統的に、「ポリシーではなくメカニズム」の伝統に従ってきました。デバイスドライバーの場合、これはカーネル内のドライバーIDがメジャー/マイナーデバイス番号にすぎないことを意味します。 mknodを使用したデバイスの命名(「ポリシー*」)は、ユーザースペースに任されています。