Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages | Examples

Interrupt Management
[Nut/OS API]

Collaboration diagram for Interrupt Management:


Detailed Description

Interrupt support.

Note, that it is not required to register interrupts with Nut/OS. Actually, this will route interrupts through the kernel, which results in performance degradation.

If fast interrupt processing is required, drivers as well as applications should consider using native interrupt handlers. Your compiler documentation is the right source to check how this can be done.


Functions

void CallHandler (IRQ_HANDLER *irh)
 Call a registered interrupt handler.
int NutRegisterIrqHandler (IRQ_HANDLER *irq, void(*handler)(void *), void *arg)
 Register an interrupt handler.
int NutIrqEnable (IRQ_HANDLER *irq)
 Enable a specified interrupt.
int NutIrqDisable (IRQ_HANDLER *irq)
 Disable a specified interrupt.
int NutIrqSetPriority (IRQ_HANDLER *irq, int level)
 Modify the priority level of an interrupt.
int NutIrqSetMode (IRQ_HANDLER *irq, int mode)
 Modify the interrupt mode.


Function Documentation

int NutRegisterIrqHandler IRQ_HANDLER *  irq,
void(*)(void *)  handler,
void *  arg
 

Register an interrupt handler.

This function is typically called by device drivers, but applications may also implement their local interrupt handlers.

Parameters:
irq Interrupt to be associated with this handler.
handler This routine will be called by Nut/OS, when the specified interrupt occurs.
arg Argument to be passed to the interrupt handler.
Returns:
0 on success, -1 otherwise.

int NutIrqEnable IRQ_HANDLER *  irq  ) 
 

Enable a specified interrupt.

Parameters:
irq Interrupt to enable.
Returns:
0 on success, -1 otherwise.

int NutIrqDisable IRQ_HANDLER *  irq  ) 
 

Disable a specified interrupt.

Parameters:
irq Interrupt to disable.
Returns:
0 on success, -1 otherwise.

int NutIrqSetPriority IRQ_HANDLER *  irq,
int  level
 

Modify the priority level of an interrupt.

The function returns the old priority, which makes it easy to temporarily switch to another priority and later set back the old one.

Note:
Not all targets support dynamic interrupt prioritization. Check the hardware data sheet for valid levels.
Parameters:
irq Interrupt to modify.
level New priority level.
Returns:
Old priority level or -1 in case of an error.

int NutIrqSetMode IRQ_HANDLER *  irq,
int  mode
 

Modify the interrupt mode.

The function returns the old mode, which makes it easy to temporarily switch to another mode and later set back the old one.

Note:
Not all targets support all modes. Check the hardware data sheet for valid levels.
Parameters:
irq Interrupt to modify.
mode New priority level.
Returns:
Old mode or -1 in case of an error.


© 2000-2006 by egnite Software GmbH - visit http://www.ethernut.de/