我正在写一个字符设备驱动程序。在我通过互联网找到的示例代码中,提到我们需要将一些文件操作附加到此角色设备。在那些file_operations中,有一个名为open的函数。但在公开招呼中,没有做任何重大的事情。
但是如果我们想要使用这个字符设备,首先我们需要打开设备,然后我们才能读/写任何内容。所以我想知道open()
调用是如何正常工作的。这是我所指的字符设备驱动程序的链接:
http://appusajeev.wordpress.com/2011/06/18/writing-a-linux-character-device-driver/
答案 0 :(得分:1)
用户端open()
的序列非常简单:它将在内核路径上调用sys_open()
,将执行一些路径解析和权限检查,然后将其获取的所有内容路由到{{ 1}}(并且不会做任何其他事情)。
dev_open()
获取通过dev_open()
系统调用传递给它的参数(+很多特定于内核vfs子系统的信息,但这很少引起关注)。
请注意,您正在传入open()
参数。它有几个有用的字段:
struct file
其余的你可以通过查看来源中的示例来挖掘自己。