kobject,device_create和我的代码有什么区别?

时间:2018-05-28 21:47:25

标签: c linux linux-kernel linux-device-driver

我目前正在阅读一本名为"Linux device drivers" from O'Reilly的书。

事情是,本书imo并不是如何编写驱动程序的指南,而是解释了所有api及其原理。 所以我尝试写一个小驱动程序 - 它没有做任何有趣的事情 - 到目前为止我读到的内容。 事情是:

  • 我不知道我可以在catecho上执行哪个文件来调用我的回调函数

  • 它看起来与我在网上找到的所有其他代码段

  • 完全不同

不同的代码:

我可以看到我的代码在/ sys / kernel下成功创建了一堆文件。现在我的代码和其他两个片段之间的区别是什么?我应该使用device_create / kobjects还是其中之一?我正在阅读的书中没有提到其他2个代码所使用的函数。所以不确定我应该遵循哪种方式...

Thanks_xe

2 个答案:

答案 0 :(得分:1)

回答你关于如何跟上最新api的问题 - 如果重命名或更新,大多数api会保留相似的名称,并且主要驻留在同一个头文件中,因此快速查看源代码或更简单的http://elixir.bootlin.com/并搜索您正在使用的Linux发行版中的特定函数的源文档。如果您无法在该版本中找到API,那么请通过标题查找新API,因为名称几乎相同,例如当您阅读Timer章节时,您会发现setup_timer()已更改为timer_setup( )。在这里和那里几乎没有其他变化。 如果您希望通过订阅内核maillist或阅读文档来跟上最新的讨论。

答案 1 :(得分:0)

device_create()创建一个设备并将其注册到sysfs,并创建必要的kobjects。

要创建必要的kobjects,在kobject_init()中调用与kobject相关的函数(kobject_add()device_create(),...)。

如果您需要创建设备,则应调用其中一个设备创建功能,例如device_create()