Jika Anda melihat definisi fungsi baru:
/* 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)));
Anda akan melihatnya memastikan bahwa boilerplate yang tepat disertakan sehingga fungsi khusus ini dapat ditangani dengan benar oleh kompiler. Itulah yang dilakukan API internal Linux, itu berkembang jika ada cara yang lebih baik untuk memecahkan masalah.
Apa kelebihan [module_init] di Kernel 2.6
module_init
juga keluar di 2.4, ingatlah.
Ia menambahkan boilerplate yang diperlukan untuk menginisialisasi modul dan menjalankan fungsi entri saat file modul dikompilasi ke dalam kernel, bukan sebagai modul.
Bagaimana saya bisa menjalankan skrip baris perintah Perl one liner dengan benar?
Bagaimana aplikasi C/C++ saya menentukan apakah pengguna root menjalankan perintah?