Hi, I really want your advice on this because I'm not sure of having found a good solution, and writing a solution for this problem would be quite long. Let me expose the problem:
I have a basically working libhurd-cap-server for L4ng here, and I'd like to use it in replacement in all servers. This complicates a lot the bootstrap procedure, because sharing a capability requires the cap server to be running. The current boot protocol is the following: * physmem is launched by wortel. It starts up, and create a bucket. * physmem asks wortel for all the frames containing the modules, creating the necessary container and giving the cap handle. * physmem calls bootstrap_final, and wortel starts the other servers like this: * a startup code is booted in the new address space, which requests physmem to map the memory in the containers. * Then the task initialize its pager and memory management stuff. * Then initialize its bucket, and respond to wortel askings, and so on. There are many problems when introducing the cap server: -You can't create a bucket when cap isn't running, nor injecting them. You can't create capabilities, in fact :). -So, cap must boot on memory provided by physmem, without using regular RPCs. So, physmem must provide memory to the cap server... This suggest for me that we have to use physmem as the initial pager, as was planned from what I can see. Except that it can't use a special container or anything: instead the pager should keep track of every memory it has given, and when cap is boot up, it should put all this in a container and give it to cap. -Once cap is booted, physmem would make wortel_cap_request/reply like calls to cap, and cap will forward them to wortel. Then, cap could create a cap buffer for every server, containing all the cap boxes a server need. -When the other servers boot, they make a call to cap to acquire their capabilities on the already-booted servers, then bootup, make their cap_request/reply calls to cap, then asks for the rest of the capabilities. They could have a special container for using physmem as a pager. What do you think of this? Is it worth implementing this right now, or a hack would be sufficient for now, because having this new libhurd-cap-server is quit urgent (I guess that with capability passing, we could begin work on swap servers or so on?) Thanks, Matthieu _______________________________________________ L4-hurd mailing list [email protected] http://lists.gnu.org/mailman/listinfo/l4-hurd
