私は非常に単純な hello world カーネル モジュールを作成しており、おかしな動作をしています。これは、カーネル 3.3.8 にアップグレードするまでは機能していましたが、現在は機能しています...まあ、init
終了時に関数を呼び出し、exit
初期化時に関数を呼び出しています。名前が正しいことを確認しました
// Needed for module definitions
#include <linux/module.h>
// Needed for initilization modules
#include <linux/init.h>
// Must declare some license
MODULE_LICENSE("Dual BSD/GPL");
// Function to be called on insmod
// Returns 0 on success
static int __init mymod_init(void)
{
// Prints kernel alert. Check /var/log/syslog
printk(KERN_ALERT "Module was loaded, this is the printk.");
return 0;
}
// Function to be called on rmmod
static void __exit mymod_exit(void)
{
// Prints kernel alert. Check /var/log/syslog
printk(KERN_ALERT "Module was unloaded, this is the printk");
}
// Register these functions
module_init(mymod_init);
module_exit(mymod_exit);
出力例:
root@cop4610:/home/cop4610/Downloads/linux-3.3.8/mymodule# insmod mymodule.ko root@cop4610:/home/cop4610/Downloads/linux-3.3.8/mymodule# tail /var/log/syslog Oct 12 10:08:20 cop4610 カーネル: [633.567832] モジュールがアンロードされました。これは printk です
以下は、この出来事のライブ ビデオです: http://www.youtube.com/watch?v=8aJNSpCd7as&feature=youtu.be