[comp.sys.amiga] Problem with Cause

dillon@CORY.BERKELEY.EDU (Matt Dillon) (01/28/88)

>Last week, I posted a piece of code dealing
>with software interrupts and messages.  Since
>using the -v and -y options.  The program prints
>eriods every second until I stop it with a
>ontrol-C.
...
>   interrupt.is_Node.ln_Type = NT_SOFTINT;
...
>   Cause(&interrupt);

	Try setting the interrupt.is_Node.ln_Type to something other
than NT_SOFTINT.  (I haven't tried this myself, but the ROM code for 
Cause() seems to ignore interrupt nodes set to NT_SOFTINT.

				-Matt

andy@cbmvax.UUCP (Andy Finkel) (01/28/88)

In article <694@trwspf.TRW.COM> knurlin@trwspf.UUCP (Scott Karlin) writes:
>Last week, I posted a piece of code dealing
>with software interrupts and messages.  Since

Try making your node type NT_INTERRUPT, rather than softint.
softint is really an internal flag.

		andy
-- 
andy finkel		{ihnp4|seismo|allegra}!cbmvax!andy 
Commodore-Amiga, Inc.

"Never test for an error condition you don't know how to handle."
		
Any expressed opinions are mine; but feel free to share.
I disclaim all responsibilities, all shapes, all sizes, all colors.

kkaempf@rmi.UUCP (Klaus Kaempf) (02/13/88)

In article <8801271950.AA24675@cory.Berkeley.EDU>
dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
> Try setting the interrupt.is_Node.ln_Type to something
> other than NT_SOFTINT. (I haven't tried this myself, but
> the ROM code for Cause() seems to ignore interrupt nodes
> set to NT_SOFTINT.

It's not really ignored. "Cause()" does the following:

1. Change node type from NT_INTERRUPT to NT_SOFTINT.
2. Link the interrupt structure according to priority into
   the appropriate exec-softint-list.
3. Request a software interrupt.

The software interrupt handler then processes all the five
softint lists and restores the node type to NT_INTERRUPT
after removing the node from the list. So this node type is
used to avoid double queueing of a single software interrupt
structure.

!ralph

Ralph Babel, Falkenweg 3, D-6204 Taunusstein, FRGermany