首页 热点资讯 义务教育 高等教育 出国留学 考研考公

linux怎么选择启动内核的顺序

发布网友

我来回答

1个回答

热心网友

单独定义一个优先级,把afe相关的初始化都放到那里面去,
  这样,就可以保证,其他没什么相关的冲突了。
  最后证实,这样是可以实现目的的。

  具体添加一个新的优先级的步骤如下:

  1.定义新的优先级

  include\linux\init.h中:

  #define pure_initcall(fn) __define_initcall("0",fn,1)

  #define core_initcall(fn) __define_initcall("1",fn,1)
  #define core_initcall_sync(fn) __define_initcall("1s",fn,1s)
  #define postcore_initcall(fn) __define_initcall("2",fn,2)
  #define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s)
  #define arch_initcall(fn) __define_initcall("3",fn,3)
  #define arch_initcall_sync(fn) __define_initcall("3s",fn,3s)
  #define subsys_initcall(fn) __define_initcall("4",fn,4)
  #define subsys_initcall_sync(fn) __define_initcall("4s",fn,4s)
  #define fs_initcall(fn) __define_initcall("5",fn,5)
  #define fs_initcall_sync(fn) __define_initcall("5s",fn,5s)
  #define rootfs_initcall(fn) __define_initcall("rootfs",fn,rootfs)
  #if 1
  #define prev_device_initcall(fn) __define_initcall("6",fn,6)
  #define prev_device_initcall_sync(fn) __define_initcall("6s",fn,6s)
  #define device_initcall(fn) __define_initcall("7",fn,7)
  #define device_initcall_sync(fn) __define_initcall("7s",fn,7s)
  #define late_initcall(fn) __define_initcall("8",fn,8)
  #define late_initcall_sync(fn) __define_initcall("8s",fn,8s)

  #else
  #define device_initcall(fn) __define_initcall("6",fn,6)
  #define device_initcall_sync(fn) __define_initcall("6s",fn,6s)
  #define late_initcall(fn) __define_initcall("7",fn,7)
  #define late_initcall_sync(fn) __define_initcall("7s",fn,7s)
  #endif
  复制代码

  2.用对应新的宏,定义我们的驱动:
  prev_device_initcall(i2c_dev_init);
  prev_device_initcall(as352x_afe_i2c_init);
  prev_device_initcall(as352x_afe_init);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com