[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Sat, 06 Aug 2005 19:10:14 +0200
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)
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
-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?)
- Boot protocol,
Matthieu Lemerre <=