Ol� pessoal,
estou tentando criar um modulo para aprender a usar pedidos de IRQ.
O programa � muito simples, ele ir� soar um bip no pcspeaker toda vez que um
pedido de interrup��o ocorrer atrav�s do pino 10 da porta paralela, e ir�
desligar se outro pedido ocorrer novamente.
Por�m quando compilo com 'gcc -c bip.c' ocorrem v�rios 'parse error', j�
comentei todas as linhas de c�digo e o erro continuou a ocorrer, ent�o
suponho que o erro est� nos arquivos de inclus�o do Linux, veja o c�digo
fonte:
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <asm/io.h>
#define MODULE
void monitora(int irq, void *dev_id, struct pt_regs *regs);
int desligado = 1;
int init_module(void){
int result;
printk(<1>"Iniciando driver!\n");
//checa se a porta 0x378 esta livre
result = check_region(0x378, 8);
if (result) {
printk("N�o pode usar a porta 0x378\n");
return result;
}
request_region(0x378, 8, "LPT1"); //usa a porta
//requisita a IRQ 7
result = request_irq(7, monitora,SA_INTERRUPT,"Porta Paralela",NULL);
if (result)
printk("N�o pode usar a IRQ 7");
else {
outb(0x08,0x37A); //Habilita IRQ da porta paralela(IRQ 7)
}
return 0;
}
void cleanup_module(void){
printk(<1>"Finalizando driver!\n");
release_region(0x378, 8);//libera as porta usadas
free_irq(7, NULL); //libera a IRQ usada
}
void monitora(int irq, void *dev_id, struct pt_regs *regs)
{
//executa quando a interrup��o for requisitada
if(desligado){
outb(3,0x61); //liga o pcspeaker
desligado = 0;
}
else{
outb(3,0x61); //desliga o pcspeaker
desligado = 1;
}
outb(0x20,0x20); //avisa ao 8259 que a interrup��o foi manipulada
}
P.S.: Estou usando o CL7.0 e o kernel � o 2.2.19
Aguardo ajuda,
Saud
Alan
--
100% Linux > > > 100% Livre
Porque a escolha � voc� quem faz ...
Assinantes em 19/01/2002: 2239
Mensagens recebidas desde 07/01/1999: 151312
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]