Port-amiga archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Problems with IOblix serial ports



On Thu, 20 May 2010, Frank Wille wrote:

All IOblix devices, the com ports and the lpt ports install a level 6
insterrupt handler. So when you get an interrupt from one of your com ports
all handlers (4 x comintr() and 2 x lptintr()) might be called until the
first confirmed having handled the interrupt.

Which means when the lpt-handlers are before the com-handlers in the isr
queue, they will be called first and might cause a crash when something bad
happens (ok, this doesn't explain your success with printf in comintr).


I wouldn't have any way to test an lpt port, anyhow.

I guess nobody ever tested it. I found a message from Ignatios in the
cvs-log where he wrote that IOblix lpt is untested. But I think he tested
the serial port without panics.


Any ideas?

  I see one possibility...

ioblix_zbus.c() sets supa.supio_arg = iobzclock before configuring the attached devices. Then lpt_supio.c sets sc->sc_intack = (void *)supa->supio_arg when the lpt device is attached. The interrupt routine does:
        if (sc->sc_intack)
                (*sc->sc_intack)(p);

  Oops...

--
Michael L. Hitch                        mhitch%montana.edu@localhost
Computer Consultant
Information Technology Center
Montana State University        Bozeman, MT     USA


Home | Main Index | Thread Index | Old Index