Библиотека сайта rus-linux.net
Hello, world
Традиционно все учебники программирования начинаются с программы "Hello, world!". Я не знаю, что случается с людьми, которые порывают с этой традицией, и думаю, что безопаснее не выяснять.
Модуль ядра (в дальнейшем просто модуль для краткости) должен иметь по
крайней мере две функции: init_module
, которая вызывается, когда
модуль вставляется в ядро и cleanup_module
, которая вызывается,
когда он удаляется. Обычно init_module
регистрирует драйвер для
каких-либо действий с ядром или заменяет одну из ядерных функций собственным
кодом (обычно код делает что-то и затем вызывает первоначальную функцию).
Функция cleanup_module
, как предполагается, отменяет все, что
сделано init_module
, так что модуль может быть выгружен безопасно.
/* hello.c * Copyright (C) 1998 by Ori Pomerantz * * "Hello, world" - версия для модуля ядра. */ /* The necessary header files */ /* Standard in kernel modules */ #include <linux/kernel.h> /* We're doing kernel work */ #include <linux/module.h> /* Specifically, a module */ /* Deal with CONFIG_MODVERSIONS */ #if CONFIG_MODVERSIONS==1 #define MODVERSIONS #include <linux/modversions.h> #endif /* Initialize the module */ int init_module() { printk("Hello, world - this is the kernel speaking\n"); /* If we return a non zero value, it means that * init_module failed and the kernel module * can't be loaded */ return 0; } /* Cleanup - undid whatever init_module did */ void cleanup_module() { printk("Short is the life of a kernel module\n"); }
1999-05-19