首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LKMG chardev.c关于register_chrdev函数的问题

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

Stack Overflow用户
提问于 2010-12-16 23:39:54
回答 1查看 1.1K关注 0票数 1

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

我是这方面的初学者:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-17 00:47:42

根据register_chrdev的手册页:

代码语言:javascript
复制
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/device,以便正确地识别/dev条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4462515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档