内核如何理解,哪个驱动程序模块函数处理读/写/等?

时间:2015-05-27 08:24:44

标签: linux linux-kernel driver

我找到了couple articles,其中显示了如何制作自己的hello-world驱动程序。

我认为函数名称应该是硬编码的(例如,当您从设备读取时,使用read函数等)。

但在描述i hello_read设备应该发生什么时,无处不在使用device_file_readfirst article)或catsecond article)等函数名称。

内核如何理解,他应该使用什么功能?

1 个答案:

答案 0 :(得分:2)

您的问题的答案是struct file_operations。您将在两个示例中找到它。这个结构描述了当对文件执行某些操作(如读,写或打开)时应该调用哪些函数回调(通过提供指向这些函数的指针)。

当您的驱动程序注册到某个子系统时,将传递指向此结构的指针。如果是miscdriver(第一个例子),它会在struct miscdevice结构中设置,然后传递给misc_register函数。如果是字符设备(第二个例子),它会直接作为参数传递给register_chrdev

您提供的第二个示例中描述了file_operations结构 - 请仔细阅读。