gpt4 book ai didi

linux - LKMG chardev.c 关于register_chrdev 函数的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:47 33 4
gpt4 key购买 nike

在 register_chrdev 函数中,我们必须提供设备名称。即使我们创建了一个具有相同主编号的另一个名称的设备,它也能正常工作。那么在该函数中命名的意义是什么。

我是初学者:)

最佳答案

根据 register_chrdev 的手册页:

The name parameter is a short name for  the  device
and is displayed in the The /proc/devices list. It also
must exactly match the name passed to unregister_chrdev
function when releasing the functions.

因此,内核根本没有真正使用该名称,只是作为您稍后识别注册的一种方式,以便您可以撤消它,并在/proc 设备列表中调用驱动程序。

之所以有两个名称不同但主要工作相同的独立 register_chrdev,是因为现代 Linux 内核允许多个驱动程序注册相同的主要编号,并基本上共享它。大概两个司机都会接到那个专业的所有电话,并且必须根据次要号码决定是否采取行动。我不太确定这一点,因为我曾经使用过的所有驱动程序和大多数驱动程序都遵循“每个主编号一个驱动程序”的习惯用法

最后一件事,与其硬编码一个主编号,不如将零传递给 register_chrdev 并让内核为您选择一个免费的主编号并将其返回给您。这样您就不必担心踩到其他驱动程序的脚趾,但您需要让您的用户空间代码检查/proc/devices 以便正确 mknod/dev 条目。

关于linux - LKMG chardev.c 关于register_chrdev 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462515/

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