新しい関数の定義を見ると:
/* 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 で終了しました。
モジュール ファイルがモジュールとしてではなくカーネルにコンパイルされるときに、モジュールを初期化し、エントリ関数を実行するために必要なボイラープレートを追加します。
Perl ワンライナー コマンド ライン スクリプトを正しく実行するにはどうすればよいですか?
root ユーザーがコマンドを実行しているかどうかを C/C++ アプリケーションで判断するにはどうすればよいですか?