Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 模块\平台\驱动程序初始化顺序_Linux_Linux Kernel_Initialization_Kernel Module - Fatal编程技术网

Linux 模块\平台\驱动程序初始化顺序

Linux 模块\平台\驱动程序初始化顺序,linux,linux-kernel,initialization,kernel-module,Linux,Linux Kernel,Initialization,Kernel Module,我正在向Linux添加一些热代码。我发现这段代码一度假设CPUFreq已经初始化。这两个驱动程序都是通过模块\平台\驱动程序初始化的。目前,在模块平台驱动程序(cpufreq)之前调用模块平台驱动程序(therm)。是否可以更改初始化顺序以确保在模块平台驱动程序(cpufreq)之后调用模块平台驱动程序(therm)?或者我需要将热驱动程序更改为使用device_initcall(稍后订购,但没有很好的“platform_driver”包装器)吗?要订购初始化,可以将每个热驱动程序放在差异初始化

我正在向Linux添加一些热代码。我发现这段代码一度假设CPUFreq已经初始化。这两个驱动程序都是通过模块\平台\驱动程序初始化的。目前,在模块平台驱动程序(cpufreq)之前调用模块平台驱动程序(therm)。是否可以更改初始化顺序以确保在模块平台驱动程序(cpufreq)之后调用模块平台驱动程序(therm)?或者我需要将热驱动程序更改为使用device_initcall(稍后订购,但没有很好的“platform_driver”包装器)吗?

要订购初始化,可以将每个热驱动程序放在差异初始化阶段。 请参阅旧主题:

是否要确保静态模块初始化顺序?这两个模块(cpufreq和thermal模块)在内核树中的何处可以找到?感谢您的响应。是的,我想确保静态模块初始化顺序。在设备树中,CPUFreq是第一个,thermal是最后一个。这无关紧要,因为在加载驱动模块之前,设备可能是通过特定于体系结构的初始化代码添加的。然后,静态驱动程序初始化顺序很重要。你没有回答我的问题。我说的不是设备树,而是内核树。您的模块源(cpufreq和thermal模块)在内核源代码树中的什么位置?@eepp内核树模块的位置是drivers/cpufreq和drivers/thermal。当我查看make输出时,cpufreq obj文件是在thermal obj文件之前创建的。我相信您找不到任何使用cpufreq的thermal驱动程序的示例?同一初始级别的内置内核模块的顺序由链接决定,因此由makefile本身决定。如果您在主线内核中找不到任何现有的类似用例,那么您可能有一个新的用例。在当前源中验证是否在热驱动程序之前初始化cpufreq驱动程序是一个问题。如果没有,请在
drivers/Makefile
中提交一个将cpufreq置于thermal之前的补丁(thermal当前位于cpufreq之前),并解释为什么要这样做。