私はいくつかのLinuxドライバーを移植しようとしてきましたが、Linuxのカーネルバージョン2.4と2.6にはかなりの違いがあることに気づきました。
カーネルの2.4バージョンでは、モジュールプログラミングは次のとおりでした-
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
printk(KERN_INFO "Hi \n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Bye \n");
}
ただし、2.6バージョンのカーネルでは、モジュールに対して次のことを行う必要があります-
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int hi_init(void)
{
printk(KERN_ALERT "Hi \n");
return 0;
}
static void hi_exit(void)
{
printk(KERN_ALERT "Bye \n");
}
module_init(hi_init);
module_exit(hi_exit);
カーネル2.6でのこのような変更の利点は何ですか?また、Linuxのカーネル2.6でその変更が必要だったのはなぜですか?