Docs » Autodocs » exec.library » Cause
Cause -- cause a software interrupt
Cause(interrupt) A1 void Cause(struct Interrupt *);
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.
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.
interrupt - pointer to a properly initialized interrupt node
Unlike other Interrupts, SoftInts must preserve the value of A6.
|