Page 1 of 1

The L4 microkernel

Posted: Tue Sep 25, 2007 3:12 pm
by Craze Frog
Does anyone have any experience with using the L4 microkernel? I am experimenting a little with it (more with its build process actually :wink: ), is it worth the effort? Is really it possible to build any OS personality on top of it (I'm not asking for any revolutionary ideas)?

And I have a concrete problem: I have compiled pistachio (the L4 implementation) and it's user-level samples, and booted it with GRUB. But the samples all uses spaghetti-web makefiles, which I don't know anything about (if I need something similar I use Jam). So when I try to compile my own user-level program I don't know what library to link to. So I get undefined references to L4_ThreadControl and L4_ExchangeRegisters. Surely there's just an object file somewhere I need to link with somewhere, but where?

Re: The L4 microkernel

Posted: Tue Sep 25, 2007 11:33 pm
by Solar
Craze Frog wrote:Is really it possible to build any OS personality on top of it (I'm not asking for any revolutionary ideas)?
Possible, yes. Personally, I have my doubts about the concepts behind exokernels, but it is possible (and has been done before) IIRC.

Re: The L4 microkernel

Posted: Wed Sep 26, 2007 2:17 am
by JoeKayzA
Craze Frog wrote:And I have a concrete problem: I have compiled pistachio (the L4 implementation) and it's user-level samples, and booted it with GRUB. But the samples all uses spaghetti-web makefiles, which I don't know anything about (if I need something similar I use Jam). So when I try to compile my own user-level program I don't know what library to link to. So I get undefined references to L4_ThreadControl and L4_ExchangeRegisters. Surely there's just an object file somewhere I need to link with somewhere, but where?
I've played with L4ka::Pistachio some time ago, in your build directory, you should find a static library (IIRC it was in "user/lib/l4/libl4.a" or something), which you can link against. This library contains the implementation for all convenience API calls that are described in the manual. You should also check out the linker script that is used for the samples, IIRC you have to use a special base address for your root task, not sure though...

good luck and have fun ;)

cheers
Joe

Posted: Wed Sep 26, 2007 8:30 am
by Craze Frog
The problem is, there is no lib in user\lib\*. But there is a Makefile.in. But I don't know what to do with it.

Posted: Thu Sep 27, 2007 6:05 am
by JoeKayzA
Craze Frog wrote:The problem is, there is no lib in user\lib\*. But there is a Makefile.in. But I don't know what to do with it.
You have to build it separately. Just cd into the directory user/ and execute ./configure. This will create the makefiles, then execute make and all libs will be built, OR cd into user/lib/l4 and execute make there, then only libl4.a will be built.

cheers
Joe

Posted: Thu Sep 27, 2007 12:20 pm
by Craze Frog
There's no configure in user/, and no makefile either, only Makefile.in. Make I need to run autoconf or automake or something?

Posted: Thu Sep 27, 2007 4:59 pm
by JoeKayzA
...Okay, could it be that you've checked it out from cvs? Then, according to the file user/README.CVS you have to cd into user/, first run 'autoheader' then 'autoconf', then you should have a 'configure' in that directory. The 0.4 tarball I had just downloaded had a 'configure' in that directory right away....

Posted: Fri Sep 28, 2007 6:59 am
by Craze Frog
Thanks.

Posted: Fri Sep 28, 2007 8:56 pm
by zonas
i only test it in TUD:OS and i think it works greet ....