Skip to the content.

sysfs dev

总体来说,其中的内容很少。

实现的位置 drivers/base/devtmpfs.c

/dev/shm 以及 /dev/mqueue/ 是共享队列

https://unix.stackexchange.com/questions/534287/interprocess-message-queues-dev-shm-vs-dev-mqueue

/dev/disk 是 sysmted 创建的

#0  shmem_mkdir (idmap=0xffffffff82fade60 <nop_mnt_idmap>, dir=0xffff8881008f03b0, dentry=0xffff888105e2d240, mode=511)
    at mm/shmem.c:3276
#1  0xffffffff8146f5ef in vfs_mkdir (idmap=0xffffffff82fade60 <nop_mnt_idmap>, dir=0xffff8881008f03b0,
    dentry=dentry@entry=0xffff888105e2d240, mode=<optimized out>) at fs/namei.c:4106
#2  0xffffffff814748da in do_mkdirat (dfd=dfd@entry=-100, name=0xffff88810b17a000, mode=mode@entry=511)
    at ./include/linux/mount.h:80
#3  0xffffffff81474b49 in __do_sys_mkdir (mode=<optimized out>, pathname=0x7ffeaf22d6d5 "/dev/abcadfa") at fs/namei.c:4149
#4  __se_sys_mkdir (mode=<optimized out>, pathname=<optimized out>) at fs/namei.c:4147
#5  __x64_sys_mkdir (regs=<optimized out>) at fs/namei.c:4147
#6  0xffffffff8222ac23 in do_syscall_x64 (nr=<optimized out>, regs=0xffffc90001313f58) at arch/x86/entry/common.c:51
#7  do_syscall_64 (regs=0xffffc90001313f58, nr=<optimized out>) at arch/x86/entry/common.c:82
#8  0xffffffff824000eb in entry_SYSCALL_64 () at arch/x86/entry/entry_64.S:120

破案了,就是在 systemd-udevd 创建的:

[    1.349248] [martins3:shmem_mkdir:3280] systemd-udevd

devpts

https://www.kernel.org/doc/html/latest/filesystems/devpts.html

才意识到,在 /dev 下是可以构建任何文件的,systemd 做了这个软连接,让其他的程序的日志 通过 uds 来发送过来:

🧀  l /dev/log
Permissions Size User Date Modified Name
lrwxrwxrwx     - root 10 Jun 20:11   /dev/log -> /run/systemd/journal/dev-log

/dev/char 和 /dev/block 是如何实现的

好吧,也是用户态来创建的:

内核创建的目录目前只有这些:

[    0.557437] devtmpfs: [martins3:dev_mkdir:165] cpu
[    0.557737] devtmpfs: [martins3:dev_mkdir:165] cpu/28
[    0.558245] devtmpfs: [martins3:dev_mkdir:165] cpu
[    0.558535] devtmpfs: [martins3:dev_mkdir:165] cpu/29
[    0.558921] devtmpfs: [martins3:dev_mkdir:165] cpu
[    0.559212] devtmpfs: [martins3:dev_mkdir:165] cpu/30
[    0.559766] devtmpfs: [martins3:dev_mkdir:165] cpu
[    0.560093] devtmpfs: [martins3:dev_mkdir:165] cpu/31
[    0.665680] devtmpfs: [martins3:dev_mkdir:165] vduse
[    0.710657] devtmpfs: [martins3:dev_mkdir:165] bsg
[    0.743536] devtmpfs: [martins3:dev_mkdir:165] net
[    0.753853] devtmpfs: [martins3:dev_mkdir:165] vfio
[    0.758352] devtmpfs: [martins3:dev_mkdir:165] input
[    0.762881] devtmpfs: [martins3:dev_mkdir:165] mapper
[    0.766333] devtmpfs: [martins3:dev_mkdir:165] snd

不是,/dev/char 是内核创建的

[   10.987146] sysfs: cannot create duplicate filename '/dev/char/5:0'

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。