GNU/Linux >> Linux の 問題 >  >> Linux

Linuxカーネルモジュールのmodule_initとinit_moduleの違いは何ですか?

新しい関数の定義を見ると:

/* Each module must use one module_init(). */
#define module_init(initfn)                 \
static inline initcall_t __inittest(void)       \
{ return initfn; }                  \
int init_module(void) __attribute__((alias(#initfn)));

/* This is only required if you want to be unloadable. */
#define module_exit(exitfn)                 \
static inline exitcall_t __exittest(void)       \
{ return exitfn; }                  \
void cleanup_module(void) __attribute__((alias(#exitfn)));

適切なボイラープレートが含まれていることを確認できるため、これらの特殊関数をコンパイラで正しく処理できます。これは Linux の内部 API が行うことであり、問​​題を解決するためのより良い方法があれば進化します。


<ブロック引用>

カーネル 2.6 の [module_init] の利点は何ですか

module_init これも 2.4 で終了しました。

モジュール ファイルがモジュールとしてではなくカーネルにコンパイルされるときに、モジュールを初期化し、エントリ関数を実行するために必要なボイラープレートを追加します。


Linux
  1. Linuxのlocateコマンドとfindコマンドの違いは何ですか

  2. Linuxのバッファメモリとキャッシュメモリの違いは何ですか?

  3. Linux プラットフォーム ドライバーと通常のデバイス ドライバーの違いは何ですか?

  1. Linux でのライブラリ呼び出しとシステム呼び出しの違いは何ですか?

  2. カーネルドライバーとカーネルモジュールの違いは何ですか?

  3. Unix、Linux、BSD、GNU の違いは何ですか?

  1. InnoDBとMyISAMの違いは何ですか?

  2. Linuxコンテナとイメージの違いは何ですか?

  3. partx と kpartx の違いは何ですか?