"DP" == Daniel Potts danielp@cse.unsw.edu.au writes:
DP> Assume task A is the chief of task B, which is the chief of task C, which DP> is the chief of task D. ;-)
DP> * Now, D does an ipc call to A. A successfully receives the message from D DP> via the chiefs (C and B).
DP> * Now when A replies to this, the message first gets intercepted by B.
DP> * B sends a deceiting ipc to D with A as the virtual sender. This gets DP> intercepted by C.
DP> * C sends a deceiting ipc to D with A as the virtual sender. This step DP> fails (?!) due to direction preservation not holding. That is when C DP> checks nchief on A it returns L4_NC_OUTER_CLAN, and nchief on D returns DP> L4_NC_SAME_CLAN, which is not equal, and therefore not direction DP> preserving.
I don't see why this shouldn't work. It's direction presevering, and therefore there's nor reason for it not to work. If it doesn't then that's a bug.
There's no "nchief" syscall, if the Alpha's got one, ten that's an old API. The syscall is "id_nearest".
The manual isn't actually quite clear on this (and should be fixed up). D calling id_nearest on D should return D (with whatever type, that's the bit where the manual isn't clear).
Gernot -- Gernot Heiser ,--_|\ School of Computer Sci. & Engin. Phone: +61 2 9385 5156 / \ The University of NSW Fax: +61 2 9385 5995 _,--._* Sydney, Australia 2052 E-mail: G.Heiser@unsw.edu.au v http://www.cse.unsw.edu.au/~gernot PGP fingerprint: 94 1E B8 28 25 FD 7C 94 20 10 92 E5 0B FF 39 8F