Hi:
    I have two questions about cteDelete of sel4 kernel?
    IF I want to delete slot that slot->cap is cnode object(I called it level 1 
cnode). The finaliseSlot function will create zombie capability and call 
reduceZombie(), param "immediate" is ture.
                the reduceZombie() call cteDelete() delete the endSlot, if the 
endSlot->cap is cnode capability again(I call it level 2 cnode), this time 
param "immediate" is false.
    and cteDelete() will call reduceZombie again, but because  param "immediate 
" is false ,this time reduceZombie will not call cteDelete recursively.
    the reduceZombie will call capSwapForDelete,it will swap zombie cap with 
slot 0 of level 2 cnode, if Swap cap(slot0 of level 2 cnode) is not cnode or 
tcb(the cnode object slot 0 must point to cnode self ? I did not find this 
limitation), when it return to finaliseSlot, finaliseSlot will check 
finaliseCap, because swap cap is not cnode or tcb, almost it call be 
capRemovable, and it return directly.
    1. I think when call capSwapForDelete in reduceZombie, the level 2 cnode 
become Cyclic zombie, but when return finaliseSlot, I do not think it will deal 
with below branch:
        if (!immediate && capCyclicZombie(fc_ret.remainder, slot)) {
                                }
         because this time ,slot ->cap is not cnode or tcb, it will not create 
zombie cap. then Who will delete level 2 cnode ? Is it lost as  "Cyclic 
zombie", memory leak?
    2. when delete cnode, it will check  "preemptionPoint", if our delete is 
beak, even though fs_ret.success is false, but this false is not deliver to 
caller who will delete it again?
                                  thank you for your help

_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to