驱动接口函数调用过程

本文就来揭秘一下到底一个驱动的接口函数是如何被调用的:

 

首先我们来反汇编读驱动的程序:

 

跳转到__libc_read,发现他把r7赋值给33是传过去的参数,然后调用svc指令,进入内核态相应的入口:

 

接下来就已经进入内核态,入口函数中将存入r7中的3取出。

 

 

 

 

 

然后加载一张表,表名是sys_call_call,根据这个表中内容,断定3到底是对应什么操作:

 

这个表如下,可以看出表中第三项对应CALL(sys_read),也就是说传进的参数3代表要执行sys_read

 

 

 

Sys_read对应函数实现如下图:

 

 

其中的vfs_read实现如下图,他获取了要读的那个文件的file对象,然后调用file->f_op->read,这正是我们写驱动的时候编写的接口函数:

 

 

 





posted @ 2015-11-24 23:40  DChipNau  阅读(543)  评论(0编辑  收藏  举报