linux驱动在那个目录下,linux下驱动的probe到底是在哪里被调用的?

以RTC的probe过程为例

linux内核版本5.9.0

执行路径如下

rtc@51 {

compatible = "nxp,pcf2129";

reg = <0x51>;

interrupts = ;

}

module_init(pcf2127_init), drivers/rtc/rtc-pcf2127.c

-> pcf2127_init(), drivers/rtc/rtc-pcf2127.c

-> pcf2127_i2c_register_driver(), drivers/rtc/rtc-pcf2127.c

-> i2c_add_driver(&pcf2127_i2c_driver); drivers/rtc/rtc-pcf2127.c

-> i2c_register_driver(), include/linux/i2c.h

-> driver->driver.bus = &i2c_bus_type; drivers/i2c/i2c-core-base.c

-> struct bus_type i2c_bus_type = {..., .probe = i2c_device_probe,...}

-> driver_register(), drivers/base/driver.c

-> driver_find(), drivers/base/driver.c

-> bus_add_driver(), drivers/base/bus.c

-> driver_attach(), drivers/base/dd.c

-> __driver_attach(), drivers/base/dd.c

-> driver_match_device(),

-> drv->bus->match(), drivers/base/base.h

-> device_driver_attach(), drivers/base/dd.c

-> driver_probe_device(), drivers/base/dd.c

-> really_probe(), drivers/base/dd.c

-> dev->bus->probe(), drivers/base/dd.c

-> i2c_device_probe(), drivers/i2c/i2c-core-base.c

-> client->irq = client->init_irq; drivers/i2c/i2c-core-base.c

-> of_irq_get(), drivers/of/irq.c

-> of_property_read_u32_index(device, "interrupts",...), drivers/of/irq.c

-> client->irq = irq; drivers/i2c/i2c-core-base.c

-> driver->probe(), drivers/i2c/i2c-core-base.c

#define module_init(initfn) \

static inline initcall_t __maybe_unused __inittest(void) \

{ return initfn; } \

int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));

#define i2c_add_driver(driver) \

i2c_register_driver(THIS_MODULE, driver)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值