Skip to the content.

mknod

使用

参考 1,实际上是建立 dev_t 和路径的关系的,而这个路径具体是什么并不重要。

原理

主要参考 2 3

当调用 mknod 的时候,取决于该文件所在的文件系统,会调用不同的 inode_operations::mknod 创建在 /dev/x 中,最后调用的是 shmem_mknod,但是如果在 ~/ 中创建,那就是 ext4_mknod

如果是 chardev,那么注册给这个 inode 的 file_operationsdef_chr_fops

/*
 * Dummy default file-operations: the only thing this does
 * is contain the open that then fills in the correct operations
 * depending on the special file...
 */
const struct file_operations def_chr_fops = {
    .open = chrdev_open,
    .llseek = noop_llseek,
};

如果启动内核之后,就是启动 bash ,虽然可以从 /proc/partitions 中可以看到有 blockdev,但是在 /dev 下依旧是什么都没有, 而在一般的 Linux distribution 中,在 /dev/ 下创建对应的文件的工作,应该是被 udev 完成了。

源码

处理 chardev 和 blockdev 的位置:

主要是注册和管理 chardev 驱动,最后

相关话题

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

  1. What does mknod do? 

  2. Professional Linux Kernel Architecture : Device Drivers 

  3. Understand Linux Kernel : I/O Architecture and Device Drivers