驱动接口函数调用过程

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

 

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

 

跳转到__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,这正是我们写驱动的时候编写的接口函数:

 

 

 





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值