Hello,
I read the manual for v12.0 chapters 1-3, and 10. I have been
attempting to experiment with CSpaces for the user space root thread. I
am trying to modify the CSpace to support multiple CNode levels by
changing the guard from all zero bits above the radix (16 bits of radix
on PC99 x64), to support multiple CNode levels. I have been using
seL4_TCB_SetSpace to modify the CSpace for seL4_CapInitThreadTCB. The
result is seL4_NoError and once I make this call the previously working
capabilities tutorial quits working as expected. (Calls taking the
original seL4_CapInitThreadTCB value are now returning
seL4_InvalidCapability). I have studied chapter three of the manual and
I think I understand how the CSpace addressing works in depth. What I
can't seem to figure out is how to construct a cspace_root_data argument
for the call to seL4_TCB_SetSpace for the number of guard bits and the
guard values I want to use. For example, if I wanted two levels each
with a 4 bit guard and a 16 bit radix how would I construct
cspace_root_data argument for a gaurd value of 0x0? And for a gaurd
value of 0xF?
(I intend to keep the original seL4_CapInitThreadTCB CNode as my level-1
CNode for this experimentation.)
Thank you in advance if you can point me to some reference documentation
that may cover how to construct the cspace_root_data argument, guidance,
or direction you may be able to give.
Sincerely,
Ben McCart