/* hello - simple_mod.c Como criar um simples modulo para o kernel */ /* Escrito 2002 por Vinicius Della Libera (vinicius@sim.lme.usp.br). Seque abaixo como criar um simples modulo para o kernel utilizando da funcao init_module() e cleanup_module() isto e o basico para o desenvovimento de modulos, qualquer um que queira desenvolver modulos para o kernel devera saber fazer isto, lembrando que init_module() e cleanup_module() sao obrigatorios para todo modulo. Nao existe nada complexo nas informacoes que seguem aqui, mas requer no minimo conhecimento basico de programacao em linguagem C. Para compilar este modulo faca gcc -c simple_mod.c para carregar o modulo insmod simple_mod.o e para remover o modulo rmmod simple_mod. Apos dar insmod simple_mod.o vc pode ver o modulo carregado dando lsmod */ #define MODULE // Indica que se esta iniciando um modulo #include <linux/module.h> // Padrao de definicoes dos modulos. Necessario! #include <linux/kernel.h> // Padrao de definicoes do kernel. Necessario! /* Carrega imagem realocavel do modulo para o espaco do * kernel e executa a funcao init do modulo, quando existir * uma chamado insmod simple_mod.o esta funcao sera chamada. * Necessario!*/ int init_module(void) { /* printk() e uma funcao semelhante a printf(), porem em * programacao de kernel (Kernel-Programming), tudo e bem * diferente de programacao normal (Userspace-Programming) * o kernel nao pode acessar as funcoes da libc, por isso * tem suas proprias funcoes, printk e um simbolo exportado. * Pode-se passar o nivel de prioridade, neste caso esta sendo * passado <1> para mandar saida para o console, informacoes * sobre os niveis* de prioridade veja em * usr/src/linux/include/linux/kernel.h */ printk( KERN_ALERT "Modulo Ativado \n"); return(0); } /* Tenta remover uma entrada carregavel do modulo nao usada, quando * existir uma chamada rmmod simple_mod, esta funcao sera chamada. * Necessario! */ void cleanup_module(void) { printk( KERN_ALERT "Modulo Desativado \n"); }