Я пытаюсь подключить несколько 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);
В чем преимущество таких изменений в Kernel 2.6 и почему это изменение требуется в ядре 2.6 linux?