Udev

設備名稱的原始碼

  • February 17, 2017

在 linux 系統上,許多設備名稱可以在/dev. 這必須在 linux 核心原始碼、udev 程式碼、設備樹或驅動程式碼中的某個地方定義。

例如,確定磁片驅動器應以 開頭fd還是硬碟以 開頭的原始碼位於何處sd

LXR(Linux 交叉引用)項目,您可以在其中選擇核心版本並蒐索程式碼。

(注意:舊的http://lxr.linux.no不再正常工作了,至少對我來說是這樣;對於較新的核心版本,搜尋已中斷。)

搜尋“floppy”(不帶引號)並嘗試查看結果 grepping “fd”(帶引號)導致我實現了磁片塊設備(這裡在核心 4.9 中):

http://lxr.free-electrons.com/source/drivers/block/floppy.c#L4219

現在作為一個交叉引用,您可以跟隨register_blkdev它的其他使用地點。

一個更容易找到的可能是類似/dev/nullor /dev/zero。對於那些,看看${kernel_root}/drivers/char/mem.c。對於 4.9.6(現在可能已經有一段時間了),有一個struct memdevnamed數組devlist,其中數組中的每個條目對應一個記憶體設備:

...
[3] = { "null", 0666, &null_fops, 0 },
...
[5] = { "zero", 0666, &zero_fops, 0 },
...

null_fops和包含相應設備的zero_fops文件操作結構。

引用自:https://unix.stackexchange.com/questions/345616