12 Oct 2003 03:32
future of libports
Marcus Brinkmann <Marcus.Brinkmann <at> ruhr-uni-bochum.de>
2003-10-12 01:32:45 GMT
2003-10-12 01:32:45 GMT
Hi, I have some larger changes in mind for the libports replacement on L4 (libhurd-cap). I want to share the fundamental consequences, and if you can think of a situation where it would be too restrictive, please let me know. I checked the current code base, and it seems to be ok so far. For the following, you can think of a capability as something equivalent to a libports port object. * While right now ports are inlined into objects like protids, I will inline objects into capabilities. This way, objects will become part of the capality system, and several optimizations are possible. For example, caching slab allocators are automatically used for such objects. One consequence is that all objects that are related to each other (are in the same class) must have the same maximum size (you can use hook pointers of course). * Of course, as Mach ports won't exist anymore, there are no ways to extract, insert, remove, or transfer port rights from or to capabilities. The capability itself is the only way to express something that resembles the current "receive right". I checked the code carefully, and all cases where we currently use something like ports_transfer_right can be rewritten. Some functions will remain in different clothes. For example, ports_reallocate_port really means: Revoke access to this object from all users, and that function can be implemented for capabilities as well. * Buckets and classes will be merged into a single "class" object. There are many reasons and consequences, but the most convincing one is probably that we don't really treat them very independently in the Hurd code. Often there is a 1-1 correspondence, in other cases several classes(Continue reading)
RSS Feed