设备名称的源代码

设备名称的源代码

在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它的其他使用场所。

相关内容