c语言回调函数_C语言函数注册回调机制的实现

本文介绍了C语言中回调函数的原理和实现,通过定义结构体封装数据和函数指针,模拟类的行为。阐述了回调函数在Linux内核驱动中的应用,并展示了如何进行函数注册和触发,最后提到了动态管理注册结构体的链表设计思路。
摘要由CSDN通过智能技术生成

dbe1b14d3c4c16d3ea5d7a0d12186f43.png背景:

在Linxu内核驱动源码中经常可以看见,函数注册的用法。常见的驱动probe阶段均有driver register的过程。细究之下,发现是使用函数指针的方式,将驱动的实现部分注册进链表中。在实际的项目中,这种用法无疑能够优化程序的框架,使得整体风格更为统一。

 e225ef0b60fde59e4f18619df15470eb.png定义好注册接口后,将待执行的函数进行注册,在程序执行到某个地方进行统一调度。试想在linux设备树的框架中,在kernei执行的早期,设备树被展开成各platform_device,在后期的驱动实现过程中,驱动经过moudule_init()后,将带有compatible属性的的match table数据的platform_driver驱动进行注册。注册之后,系统会进行驱动与设备的match操作,当通过compatible表匹配到相关设备时,会进行probe回调函数的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值