Linuxシステムにはたくさんデバイス名下から見ることができます/dev
。これは、Linuxカーネルのソースコード、udevコード、デバイスツリー、またはドライバコードのどこかに定義する必要があります。
fd
たとえば、フロッピードライブをで起動するか、ハードディスクをで起動するかを決定するソースコードはどこにありますかsd
?
答え1
/dev/null
またはのようなものが簡単に見つかります/dev/zero
。そのような人のために見てください${kernel_root}/drivers/char/mem.c
。 4.9.6(しばらくこの方法であった可能性があります)の場合、配列の各項目がメモリデバイスに対応するstruct memdev
配列があります。devlist
...
[3] = { "null", 0666, &null_fops, 0 },
...
[5] = { "zero", 0666, &zero_fops, 0 },
...
null_fops
そのデバイスを含むzero_fops
ファイル操作構造が含まれています。
答え2
一部はLXR(Linux相互参照)プロジェクトここでカーネルバージョンを選択してコードを検索できます。
(注:古いhttp://lxr.linux.no少なくとも私には、更新されたカーネルバージョンの検索が中止されました。 )
「floppy」(引用符を除く)を検索し、「fd」(引用符を含む)をgrepしようとすると、フロッピーブロックデバイス(カーネル4.9)の実装が見つかりました。
http://lxr.free-electrons.com/source/drivers/block/floppy.c#L4219
これで、相互参照としてregister_blkdev
使用される他の場所に従うことができます。