Linuxカーネルのモジュールにおける、module_initとinit_moduleの相違点

Linux カーネルモジュールを初期化するにあたって、module_init と init_module の両方が使われるが、その使用方法と実行順番は異なる。

  1. module_init はモジュールコード内でモジュール初期化時に呼び出される関数を定義するために使用するマクロです。モジュールのエントリポイント関数を指定し、モジュールがロードされたときに呼び出されます。module_init はモジュールコードの最上位レベルでのみ一度使用できます。
  2. init_module: モジュールコードで実装されている関数で、モジュールのエントリ関数として動作します。カーネルはモジュールがロードされると、このinit_module関数を自動的に呼び出します。init_moduleは、モジュール初期化関数の実際の実装です。

要約:

  1. module_init是一个宏,用于定义模块初始化函数的入口点。
  2. init_module は、モジュール初期化の具体的なロジックを実装するための現実的な関数です。
  3. modue_init をモジュールコード最上部で1度だけ使用します。
  4. init_moduleはモジュール初期化関数の実際の定義です。

モジュール初期化におけるmodule_initとinit_moduleは協調しており、module_initでモジュールエントリ関数を指定し、init_moduleでモジュール初期化ロジックを実装する

bannerAds