ドライバの初期化中module_init
との違いは何ですか?subsys_initcall
11347 次
1 に答える
26
違いは、タイミング、より正確には実行の順序に関連しています。つまり、として宣言されたsubsys_initcall
プロシージャは、として宣言されたプロシージャの前に実行されることが保証されmodule_init
ます。この順序により、デバイスドライバーが前者の機能を利用しようとする前に、サブシステムドライバーとプラットフォームドライバーが初期化されます(たとえば、デバイスドライバーはサブシステムデバイスとして登録されます)。
それぞれの実際のマクロ定義は、カーネルが(ロード可能な)モジュール用に構成されているかどうかによって異なります。これらのマクロ(およびその他のinitマクロ)の定義は、include / linux/init.hにあります。
subsys_initcall()
組み込みの(静的にリンクされた)モジュールでのみ使用できることに注意してください。
module_init
組み込みモジュールまたはロード可能モジュールのいずれかで使用できます。
于 2013-03-21T08:43:35.103 に答える