Cuando el primer programador de las cavernas cinceló el primer programa en las paredes de la primera computadora de las cavernas, era un programa para imprimir la cadena de caracteres `Hola, mundo' en las pinturas de los Antílopes. Los libros de texto de los romanos sobre programación empezaban con el programa `Salut, Mundi'. No sé qué puede ocurrirle al que rompa esta tradición, y creo que es más seguro no averiguarlo.
Un módulo del núcleo tiene que tener por lo menos dos funciones: init_module que se llama cuando el módulo se inserta en el núcleo, y cleanup_module que se llama justo antes de ser quitado. Típicamente, init_module o bien registra un manejador para algo que tiene que ver con el núcleo, o reemplaza una de las funciones del núcleo con su propio código (normalmente código para hacer algo y luego llamar a la función original). La función cleanup_module se supone que deshace lo que init_module ha hecho, de forma que el módulo pueda ser descargado de una forma segura.
/* hello.c * Copyright (C) 1998 by Ori Pomerantz * * "Hello, world" - la versi�n m�dulo del n�cleo. */ /* Los archivos de cabeceras necesarios */ /* Est�ndar en los m�dulos del n�cleo */ #include <linux/kernel.h> /* Estamos realizando trabajo del n�cleo */ #include <linux/module.h> /* Espec�ficamente, un m�dulo */ /* Distribuido con CONFIG_MODVERSIONS */ #if CONFIG_MODVERSIONS==1 #define MODVERSIONS #include <linux/modversions.h> #endif /* Inicializa el m�dulo */ int init_module() { printk("Hola, mundo - este es el n�cleo hablando\n"); /* Si retornamos un valor distinto de cero, significa * que init_module fall� y el m�dulo del n�cleo * no puede ser cargado */ return 0; } /* Limpieza - deshacemos todo aquello que hizo init_module */ void cleanup_module() { printk("La vida de un m�dulo del n�cleo es corta\n"); }