I have a question about capability.
1. I know that CNode can consist of hierarchy of CNodes like 1-level, 2-level, 3-level.
Can I create new CNode object like them?
2. If I can create hierarchy of CNode, I want to create hierarchy of CNode in order to retype new object to new CNode object.
I tried it like below source code but it doesn't work with message "Untyped Retype: Invalid destination address".
Would you give some advices?
--------------------- source code
// ** create CNode & mapping
seL4_CPtr new_CNode_cap = info->empty.start + 5;
error = untyped_retype_root(untyped, seL4_CapTableObject, seL4_SlotBits, cspace_cap, new_CNode_cap);
ZF_LOGF_IFERR(error, "Failed to retype our chosen untyped into an CNode object.\n");
printf("================== seL4_DebugCapIdentify ======================\n");
printf("seL4_DebugCapIdentify seL4_CPtr CNode_cap : %u \n", seL4_DebugCapIdentify(new_CNode_cap));
// ** create new Endpoint object and mapping to new CNode
seL4_CPtr new_CNode_cap_Endpoint;
new_CNode_cap_Endpoint = info->empty.start + 6;
error = seL4_Untyped_Retype(untyped /* untyped cap */,
seL4_EndpointObject /* type */,
seL4_SlotBits /* size */,
new_CNode_cap /* root cnode cap */,
new_CNode_cap_Endpoint /* destination cspace */,
32 /* depth */,
new_CNode_cap_Endpoint /* offset */,
1 /* num objects */);
if(error == 0)
printf("error : %d \n", error);
3. Can I check CNode level? It means like CNode level number.