在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”(不带引号)并尝试通过 grep 查找“fd”(带引号)的结果,我找到了软盘块设备的实现(在内核 4.9 中):
http://lxr.free-electrons.com/source/drivers/block/floppy.c#L4219
现在作为交叉引用,您可以遵循register_blkdev
它的其他使用场所。