gpt4 book ai didi

linux - Linux 的设备驱动程序文档

转载 作者:行者123 更新时间:2023-12-05 02:38:54 25 4
gpt4 key购买 nike

在 2017 年的《UNIX 和 Linux 系统管理》一书中,我阅读了以下文章:

现代系统自动管理它们的设备文件。然而,一些罕见的角落案例可能仍然需要您使用 mknod 命令手动创 build 备。所以这是如何做到的:

mknod filename type major minor

这里filename是要创建的设备文件,type是字符设备c或者b对于 block 设备,major 和 minor 是主要和次要设备号。如果您正在创建一个设备文件,该文件引用您的设备中已经存在的驱动程序内核,检查驱动程序的文档以找到合适的主要和次要设备编号。

我在哪里可以找到这个文档以及如何找到设备驱动程序的 Major & Minor ???

最佳答案

命令 cat/proc/devices 显示当前运行的 Linux 内核中驱动程序使用的字符和 block 主设备号,但不提供有关次设备号的信息。

Linux 内核用户和管理员指南中有一个预分配(保留)设备编号列表:Linux allocated devices (4.x+ version) . (相同的列表也出现在 Linux 内核源代码的“Documentation/admin-guide/devices.txt”中。)该列表显示了如何为每个预分配字符和 block 主设备号解释次设备号。

一些主要的设备号被保留用于本地或实验使用,或用于动态分配:

  60-63 char    LOCAL/EXPERIMENTAL USE

60-63 block LOCAL/EXPERIMENTAL USE
Allocated for local/experimental use. For devices not
assigned official numbers, these ranges should be
used in order to avoid conflicting with future assignments.
 120-127 char   LOCAL/EXPERIMENTAL USE

120-127 block LOCAL/EXPERIMENTAL USE
Allocated for local/experimental use. For devices not
assigned official numbers, these ranges should be
used in order to avoid conflicting with future assignments.
 234-254    char    RESERVED FOR DYNAMIC ASSIGNMENT
Character devices that request a dynamic allocation of major number will
take numbers starting from 254 and downward.

240-254 block LOCAL/EXPERIMENTAL USE
Allocated for local/experimental use. For devices not
assigned official numbers, these ranges should be
used in order to avoid conflicting with future assignments.
 384-511 char   RESERVED FOR DYNAMIC ASSIGNMENT
Character devices that request a dynamic allocation of major
number will take numbers starting from 511 and downward,
once the 234-254 range is full.

调用 alloc_chrdev_region() 注册字符设备号范围的字符设备驱动程序将从动态范围中分配一个未使用的主设备号。对于第一个参数 (major) 设置为 0 的调用 __register_chrdev() 的字符设备驱动程序也是如此。

一些外部(“树外”)Linux 内核模块有一个模块参数,允许在模块加载时指定它们的默认主设备号。这对于不动态创建“/dev”条目但希望系统管理员在使用 mknod 手动创 build 备文件时选择主设备编号具有一定灵 active 的驱动程序很有用。

关于linux - Linux 的设备驱动程序文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69389243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com