维哥简述:面试就这么答就OK,今天面试居然忘记了,老司机也翻车,唉。
概论流程图
如下图所示:
(1):当运用程序调用open(dev_path,mode)时
(2):虚拟文件系统(vfs)的sys_open()函数就会被调用,该函数会在dev_path上获取到文件节点的详细信息,如:读写执行模式 主设备号 次设备号 日期 文件节点等。
(3):当获取到有效的节点信息后,就会根据主设备号与次设备号在内核维护的设备节点链表上查找。
(4):根据索引获取到信息后,就将该驱动信息返回到运用层。
从而完成运用层调用驱动层的一个大体流程。
形象比喻:
1、内核维护一张驱动信息的链表
2、注册驱动就是将驱动的信息挂接到内核的链表上(根据主次设备号)
3、运用层在文件路径下找到到详细的,需要打开的文件信息(主要是主次设备号)
4、然后便利内核维护的链表,然后返回匹配驱动节点。