当前位置:  技术问答>linux和unix

probe函数何时被调用,大家指教

    来源: 互联网  发布时间:2016-05-09

    本文导语:  看了oss驱动,里面涉及到probe函数,看probe函数里完成了很多初始化的工作,但是并没有在module_init(audio_aic33_init);的audio_aic33_init这个初始化函数里被调用,请问这个probe函数什么时候执行,驱动加载的过程是怎么样的...

看了oss驱动,里面涉及到probe函数,看probe函数里完成了很多初始化的工作,但是并没有在module_init(audio_aic33_init);的audio_aic33_init这个初始化函数里被调用,请问这个probe函数什么时候执行,驱动加载的过程是怎么样的?

|
我来大概说说,不过还是要结合你自己的代码来看(你应该先熟悉下内核的驱动架构模型,然后看这些就相对容易点):
路径1:
audio_aic33_init()->audio_register_codec()->driver_register()->driver_attach()->driver_probe_device()->drv->probe()
依据这条调用路径,最终调到了struct device_driver * drv的成员函数drv->probe();此probe函数是什么呢? 接着看:

路径2:
audio_aic33_init()->audio_register_codec()->driver_register()中,driver_register()的参数是一个struct device_driver结构类型!通常会在文件中定义一个以该结构为类型的全局变量,并对它的每个filed赋值,类似如下:
static struct device_driver xxx_audio_driver = {
.name = XXX_AUDIO_NAME,
.bus = &platform_bus_type,
.probe = audio_probe,
.remove = audio_remove,
.suspend = audio_suspend,
.resume = audio_resume,
.shutdown = audio_shutdown,
};
所以路径1中的drv->probe()其实就是这里赋给probe的函数audio_probe();

另外,和函数audio_aic33_init()在同一个文件中的一般还有一个名如xxx_aic33_probe()的函数,该函数又是在哪里被调用的呢? 该函数是在前面的drv->probe()[即:audio_probe()]中被调用的,详情,自己看代码!!!!!!

Good Luck!



|
先要去注册,然后系统发现新设备就会去调用了

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • probe函数参数传递过程?
  • linux驱动中probe函数中参数传递问题?
  • usb驱动关于probe函数
  • I2C总线上字符设备驱动加载不成功,probe函数没有执行。
  • 内核驱动中probe函数疑惑
  • spi驱动子系统中probe函数的入口参数是怎么传的?
  • Tomcat的管理和监控 PSI Probe
  • i2c设备加载驱动后没有执行probe
  • 如何在console中重新probe网卡的mac地址
  • i2c/pca9539.c文件的新模式probe疑问
  • 关于LINUX I2C驱动的Probe方法
  • 成功编译完RH8内核,也可以boot系统,但不能probe到USB设备,why?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3