Hi Kevin, On 05/04/2015 02:02 AM, Kevin Elphinstone wrote:
Instead, we ended up using a "level-bit-skip", i.e. bits to ignore in the decode. This results in the actively decoded bits being the least significant ones - which was the structure we generally used, and was most easily understood by programmers.
thank you for the clarification. It is good to know the rationale behind it.
Using your example the cap address is broken down into |12|X|14|, where X is the 6 bits effectively skipped. In experimental, it would instead be |X|12|14|.
My intention was to use the 1st-level CNode to segregate the CSpace into 4096 sub spaces with each having a maximum size of 2^20. The sub spaces vary in size. E.g., one will hold the caps for roottask-allocated kernel objects (dimensioned 2^14) whereas another would hold page frame capabilities (dimensioned 2^20). For organizing the roottask sub space, I will use 3 levels of CNodes |12|6|14| where the second level "emulates" the guard for the third level. This works fine. Best regards 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