L4Linux with serial console / IRQ usage

Adam Lackorzynski adam at os.inf.tu-dresden.de
Sat Aug 12 01:23:22 CEST 2006

On Fri Aug 11, 2006 at 14:39:32 +0200, Andreas Niederl wrote:
> Adam Lackorzynski wrote:
> > On Thu Aug 10, 2006 at 19:22:15 +0200, Andreas Niederl wrote:
> [...]
> >>Unfortunately I don't know which IRQ number is required here. I tried 
> >>passing some different values to L4Linux which resulted in the error 
> >>message 'irq_thread: RMGR denied IRQ 4: Code 0x1'.
> >>
> >>I'd be grateful for some hints on that.
> > 
> >  
> > It's 17.
> Thanks, where did you get that number?

I know it (and maybe made it up too).
> Now the system stops after printing out the message
> 'l4lx    | l4lx_thread_create: Created thread 0e.0b (IRQ17)'.
> When using l4io as omega0 server it stops after this message:
> l4lx_irq_dev_startup_virt(17) unimplemented

Yes, unimplemented, I'm sorry. I added that to my todo list, should be
low hanging stuff.

> Ctrl-C still doesn't work on my serial console, so I'm not able to debug 
> this.

I don't understand. Who should get that Ctrl-C?

> Is gdb suitable for this kind of debugging? I could not find much 
> information on this topic on the internet.

gdb is not really suited for multi address space debugging. Fiasco has a
nice built-in debugger which gives you thread states, back traces,
present and ready lists, various forms of tracing and logging etc.

> The serial console is in my case a pseudo terminal connected to the 
> serial port emulation of Qemu which I can access with GNU screen or 
> kermit or by using Qemu with the -nographic option which maps the serial 
> console onto the invoking terminal (Grub needs extra configuration for 
> that).

You can also use -serial stdio to get the serial channel into the
invoking terminal, and you can make GRUB auto-boot without manual
> >>I also noticed that there are several different ways for handling IRQs 
> >>(omega0, rmgr, l4io, ...) which require different options for some 
> >>servers and L4Linux.
> >>Are there any documents describing the IRQ handling in L4Env and how to 
> >>follow one of these ways consistently?
> > 
> > 
> > Short summary: There's the direct way of attaching to interrupts or
> > using the omega0 protocol to attach to an interupt server.
> > l4io and omega0 both implement the omega0 interface, the 'rmgr way' is
> > the way to directly attach to the interrupts.
> > When directly attaching you need I/O port access and might have problems
> > with IRQ sharing which an interrupt server should fix for you, adding a
> > slight penalty due to the indirection.
> > There's a paper on omega0 at
> > http://os.inf.tu-dresden.de/~hohmuth/prj/omega0.ps.gz
> So, is there a recommended setup for interrupt handling? omega0 seems to 
> be a reasonable approach.

Yes, l4io with omega0 protocol is supposed to be fine.

Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/

More information about the l4-hackers mailing list