导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    请问不同驱动中的probe函数执行顺序是怎么样的?

    Linux
    2
    3
    1482
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • M
      MasterLu LV 5 最后由 编辑

      最近遇到一个问题,内核启动的时候clk probe函数没有执行,导致很多功能在获取clk的时候报错,我尝试过修改驱动init的等级比如将module_init改为arch_initcall,这样操作,有时候确实有效,但是并不是都有效。
      所以我想请问一下大佬,probe的顺序是否能够修改?谢谢

      WhycanService 1 条回复 最后回复 回复 引用 分享 0
      • WhycanService
        WhycanService LV 8 @MasterLu 最后由 编辑

        @masterlu probe的执行可以修改

        module_init();等级为6
        fs_initcall(); 等级为5

        如果不放心就使用module后期加载

        可以使用 cat /sys/kernel/debug/clk/clksummary 查看 clk 是否正常

        M 1 条回复 最后回复 回复 引用 分享 0
        • M
          MasterLu LV 5 @WhycanService 最后由 编辑

          @whycanservice 谢谢回复。
          我已经在clk驱动中将module_platform_driver(clk_driver);
          改成了
          static int __init clk_init(void)
          {
          return platform_driver_register(&clk_driver);
          }
          arch_initcall(clk_init);//arch_initcall 等级为3
          我通过kernel log 看,clk_driver 执行probe的时间确实有提前,但是有的使用module_init的驱动还是会在clk_driver之前执行probe。这让我感觉很疑惑。
          我想过将驱动编译为module,但是clk涉及到很多功能,像是gpio,lcd,audio等,如果将上述的驱动都使用module,那就涉及到这些部分的驱动可能都需要编译成module,这样做是否会很奇怪。

          1 条回复 最后回复 回复 引用 分享 0
          • 1 / 1
          • First post
            Last post

          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

          行为准则 | 用户协议 | 隐私权政策