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 selection.
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