Compartilhar via


Interrupt Service Routines

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Uma rotina serviço interrupção (ISR) é uma rotina software que hardware invoca em resposta a uma interrupção. ISRs examinar uma interrupção e determinar como identificador-lo. Identificador ISRs de interrupção e em seguida, retornar um valor lógico interrupção. Se nenhum manipulação adicional é exigido como o dispositivo está desativado ou dados é armazenada em buffer, o ISR notifica o kernel com um valor de retorno SYSINTR_NOP. Um ISR deve executar muito rápido para evitar diminuir a operação do dispositivo e a operação de todas as prioridade inferior ISRs.

Embora um ISR pode mover dados de um registrar CPU ou uma porta hardware em uma reserva memória, em geral ela depende um segmento interrupção dedicado, chamado de segmento serviço interrupção (ist), para fazer a maioria do exigido processamento. Se processamento adicional é exigido, o ISR retorna um valor lógico interrupção, Other Than SYSINTR_NOP, para o kernel. Ele então mapeia um físico número interrupção para um valor lógico interrupção. De exemplo, o teclado pode ser associado com hardware interrupção 4 em um dispositivo e hardware interrupção 15 em outro dispositivo. O ISR, que é a OAL, converte o valor para o padrão Windows Embedded CE hardware-specific valor de SYSINTR_KEYBOARD. Este exemplo, SYSINTR_KEYBOARD é a valor de retorno a partir de ISR.

Quando um ISR notifica o kernel de um valor específico interrupção lógico, o kernel examina uma tabela interna para mapa (n.); mapear (v.) o valor lógico interrupção para um identificador evento. O kernel Acorda o ist por sinalização de evento. Um evento é um padrão objeto sincronização Microsoft® Win32® que serve como um despertador acordar um segmento quando algo interessante acontece.

A seguinte tabela compara plataformas hardware que suporte uma única ISR com hardware plataformas que suporte múltiplo ISRs.

Modelo ISR Descrição

Plataforma hardware ISR única

O nome do ISR é OEMInterruptHandler.

Plataforma hardware ISR vários

A OAL não fornece um OEMInterruptHandler função. Em vez disso, você deve registrar ISRs para cada interrupção por chamado HookInterrupt função na OAL.

Observação

Diferente precisar mapa (n.); mapear (v.) a partir de um IRQ para uma rotina serviço interrupção, interrupções manipulação com múltiplo ISRs é idêntica à manipulação interrupções quando um único ISR estiver presente. Uma razão não para dados processo no ISR é que não há nenhuma maneira para acessar a reserva usuário. A rotina modo ist usuário pode acessar esta reserva.

Esta seção

Seções relacionadas