Does anyone have any experience with using the L4 microkernel? I am experimenting a little with it (more with its build process actually ), 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?
The L4 microkernel
Re: The L4 microkernel
Possible, yes. Personally, I have my doubts about the concepts behind exokernels, but it is possible (and has been done before) IIRC.Craze Frog wrote:Is really it possible to build any OS personality on top of it (I'm not asking for any revolutionary ideas)?
Every good solution is obvious once you've found it.
Re: The L4 microkernel
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...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?
good luck and have fun
cheers
Joe
-
- Member
- Posts: 368
- Joined: Sun Sep 23, 2007 4:52 am
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.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.
cheers
Joe
-
- Member
- Posts: 368
- Joined: Sun Sep 23, 2007 4:52 am
...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....