Я пытался портировать несколько драйверов linux и понял, что есть существенная разница между ядром версии 2.4 и 2.6 linux.
В версии ядра 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 и почему это изменение потребовалосьв ядре 2.6 linux?