我找到了couple articles,其中显示了如何制作自己的hello-world驱动程序。
我认为函数名称应该是硬编码的(例如,当您从设备读取时,使用read
函数等)。
但在描述i hello_read
设备应该发生什么时,无处不在使用device_file_read
(first article)或cat
(second article)等函数名称。
内核如何理解,他应该使用什么功能?
答案 0 :(得分:2)
您的问题的答案是struct file_operations
。您将在两个示例中找到它。这个结构描述了当对文件执行某些操作(如读,写或打开)时应该调用哪些函数回调(通过提供指向这些函数的指针)。
当您的驱动程序注册到某个子系统时,将传递指向此结构的指针。如果是miscdriver(第一个例子),它会在struct miscdevice
结构中设置,然后传递给misc_register
函数。如果是字符设备(第二个例子),它会直接作为参数传递给register_chrdev
。
您提供的第二个示例中描述了file_operations
结构 - 请仔细阅读。