NAME
Cause -- cause a software interrupt
SYNOPSIS
Cause(interrupt)
A1
void Cause(struct Interrupt *);
FUNCTION
This function causes a software interrupt to occur. If it is
called from user mode (and processor level 0), the software
interrupt will preempt the current task. This call is often used
by high-level hardware interrupts to defer medium-length processing
down to a lower interrupt level. Note that a software interrupt is
still a real interrupt, and must obey the same restrictions on what
system function it may call.
Currently only 5 software interrupt priorities are implemented:
-32, -16, 0, +16, and +32. Priorities in between are truncated,
values outside the -32/+32 range are not allowed.
NOTE
When setting up the Interrupt structure, set the node type to
NT_INTERRUPT, or NT_UNKOWN.
IMPLEMENTATION
1> Checks if the node type is NT_SOFTINT. If so does nothing since
the softint is already pending. No nest count is maintained.
2> Sets the node type to NT_SOFTINT.
3> Links into one of the 5 priority queues.
4> Pokes the hardware interrupt bit used for softints.
The node type returns to NT_INTERRUPT after removal from the list.
INPUTS
interrupt - pointer to a properly initialized interrupt node
BUGS
Unlike other Interrupts, SoftInts must preserve the value of A6.
[Back to Amiga Developer Docs]