PSDHLP_SET_IRQ
PSDHLP_SET_IRQ keywords Won't Block
Description Setup IRQ information.
This function is used to setup IRQ information.
The PSD can use this help to register an interrupt handler at any given IRQ level between IRQ 0-IRQ 1F. These interrupt handler's are guaranteed to be called before any device driver's interrupt handler. If the PSD's interrupt handler returns NO_ERROR, the interrupt manager will assume the interrupt has been handled, and it will end the interrupt. If a -1 is returned, the interrupt manager will assume that the interrupt has not been handled, and will call each device driver which has a registered interrupt handler for that particular level, until one claims the interrupt. If the interrupt is unclaimed, the IRQ level will be masked off.
All PSDs must use the SET_IRQ PSD help to indicate which IRQ level it will be using for its inter-processor interrupts (IPI). If the PSD's IPI IRQ level is shared, it must register a handler which detects if the IRQ is an IPI or another interrupt. The handler must return NO_ERROR if the interrupt was caused by an IPI, otherwise, it returns a -1. If the IPI IRQ level is unique, an interrupt handler need not be installed, but SET_IRQ must still be used to indicate the IPI IRQ level.
This function can also be used to set, or remap what interrupt vector a particular IRQ level will use.
Mode Callable in Init mode only.
Parameters Pointer to a SET_IRQ structure.
Exit Return code.
Structures
typedef struct set_irq_s {
ushort_t irq;
ushort_t flags;
ulong_t vector;
P_F_2 handler;
} SET_IRQ;
handler contains the address of an interrupt handler. If the PSD is just specifying that a specific IRQ level is of a special type (e.g. IPI IRQ), it does not need a handler (the handler variable must be NULL).
Notes IRQf_LSI, and IRQf_SPI, are currently not being used.
There are no comments on this page. [Add comment]