Hi Paul, > In fact I expect everything running above Core, to not be > platform-specific, including device drivers. > Sure, we don't need to build some drivers if the architecture does not > have the coresponing hardware, but that does not means it would be > compiled differently.
there is a difference between source-level compatibility and binary compatibility. The code of non-core Genode components is independent from the used kernel at source level only. > And I definitively *do not* expect libraries to be compiled with > specific kernel headers file. I expect libc, device drivers, to call > Core the same way, and Core to be compiled in a specific manner for > each platform. I wonder where your expectation comes from. Do you expect a library compiled on FreeBSD to be usable when copied onto a Linux system? I wouldn't expect this to work (although I never tried .-) >From 10000 feet above the ground, I can perfectly follow your reasoning. But when looking more closely, it is not that simple. Just consider the following problem. How do you expect a non-core process to "call" core? On Linux, this process uses Unix domain sockets (by issuing the respective Linux system calls). On Pistachio, the process would use the L4-IPC mechanism (by using Pistachio-specific system calls). On NOVA, the process would use NOVA's portal mechanism (by using NOVA-specific system calls). Similar stories can be told about thread creation, process creation, locking, etc. All these things need platform-specific bits that are not solely encapsulated in core but need platform-specific support code in each non-core process. That said, I don't think that it's entirely impossible to achieve binary compatibility. Maybe you'd like to give this experiment a try? We try to keep the platform-specific bits as small as possible. They are (almost) all contained in the respective 'base-<platform>' directories. If you like to explore this topic, a good start would be to compare the differences of the various 'base-<platform>' repositories, in particular the header files at 'base-<platform>/include'. The ultimate goal would be to completely unify those, and to move all base libraries (the libraries provided by the 'base-<platform>' repositories) into one single shared library per platform. Personally, I think it is very challenging. But maybe you like such damn hard challenges? ;-) Cheers Norman -- Dr.-Ing. Norman Feske Genode Labs http://www.genode-labs.com · http://genode.org Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth ------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnnow-d2d _______________________________________________ Genode-main mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/genode-main
