Hi:
I have two questions about cteDelete of sel4 kernel 12.0.0?
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, if Swap cap is not cnode
or tcb, when it return to finaliseSlot, finaliseSlot will check finaliseCap,
because swap cap is not cnode or tcb, almost it 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. 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 cnode object again?
Thank you very much
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]