Dados gerais

Interface: IntController_i386
Arquivos: intcontroller_i386.h
Última atualização: 23/07/2002
Autor: Luiz Henrique Shigunov
Informações

Descrição
Para saber mais
Funções para o sistema

0x00 - EndIRQ - Envia o comando de término de interrupção
0x01 - MaskIRQ - Desabilita uma interrupção

0x02 - RedirectIRQ - Redireciona as interrupções
0x03 - UnmaskIRQ - Habilita uma interrupção

Descrição

Esta página descreve a interface IntController_i386 que trata do acesso ao controlador de interrupções usado num computador da arquitetura IA32 da Intel.

O controlador de interrupções controla como as interrupções de hardware são feitas. Bem como se elas serão ou não aceitas. Nos computadores PC/AT, as interrupções de hardware são sinalizadas através de linhas especiais, as requisições de interrupção (IRQ). Cada IRQ é ligada numa interrupção do processador.

O PIC (Programmable Interrupt Controller) é o componente que administra as interrupções físicas (hardware), bem como as IRQs. Os computadores compatíveis com o PC/AT têm dois PICs em endereços diferentes (20h e A0h). O primeiro administra as IRQs de 0 a 7 e o segundo IRQs de 8 a 15. Dando um total de 15 IRQs, pois a IRQ 2 é usada para conectar o primeiro no segundo PIC.

Quando uma IRQ é sinalizada, o PIC correspondente, gera uma interrupção. O número dessa interrupção depende da configuração do PIC.

Os PCs mais modernos utilizam outra estrutura onde existem os PICs locais (APIC) e o PIC do sistema (I/O APIC). Essa estrutura é usada nos 586 em diante para permitir vários processadores na mesma placa mãe. Mas são compatíveis com os do PC/AT.

No início todas as IRQs estão mascaradas, cada módulo que for usar uma IRQ deve desmascará-la.

Para saber mais

Para saber mais sobre o PIC visite:

0x00 - EndIRQ

Sintaxe

void EndIRQ(unsigned int irq);

Propriedades

Descrição

Esta função envia o comando de término de IRQ para o PIC apropriado.

Se a IRQ irq pertencer ao primeiro PIC, o comando só será enviado ao primeiro PIC. Mas, se pertencer ao segundo PIC, o comando será enviado para o primeiro e para o segundo PIC.

Valor de retorno

Nada.

0x01 - MaskIRQ

Sintaxe

int MaskIRQ(unsigned int irq);

Propriedades

Descrição

Esta função desabilita a IRQ irq. Quando uma IRQ está desabilitada, qualquer sinal na IRQ será ignorado, ou seja, não vai gerar uma interrupção no processador.

Valor de retorno

0x02 - RedirectIRQ

Sintaxe

int RedirectIRQ(unsigned int interrupt);

Propriedades

Descrição

Esta função redireciona as IRQs. Isso significa que a IRQ0 poderá ser ligada à interrupção 45h ou a outra qualquer. Assim, quando a IRQ0 for sinalizada, a interrupção 45h vai ser gerada.

Se colocarmos a IRQ0 na interrupção 45h, a IRQ1 ficará em 46h, a IRQ2 em 47h e assim por diante. Só se especifica a primeira interrupção interrupt, as outras são consecutivas. As IRQs do segundo PIC também serão redirecionadas para serem logo depois das IRQs do primeiro PIC.

Valor de retorno

0x03 - UnmaskIRQ

Sintaxe

int UnmaskIRQ(unsigned int irq);

Propriedades

Descrição

Esta função habilita a IRQ irq. Quando uma IRQ está habilitada, um sinal na IRQ vai gerar uma interrupção no processador.

Valor de retorno