Re: Codezero v0.2 Capabilities

Tom Bachmann <[email protected]> Mon, 07 Dec 2009 21:09:50 +0100
Newsgroups gmane.os.hurd.l4
Message-ID <[email protected]>

Bahadir Balban wrote:
> When it comes to making the ipc call though, you don't pass the 
> capability id to the call. You pass the thread id you want to ipc to. 
> The system call signature is the same as if capabilities were not there 
> at all. But it surely gets checked, the relevant capability is found, 
> it's resource id is matched with the passed thread id, and resolved.
> 

How does capability transfer work in your system? As far as I know, one 
important feature of capabilities is that they unify authorization and 
designation.

Moreover, this breaks (at the kernel boundary!) one important design 
principle (which I value): explicit designation of authority. How can 
your system avoid the confused deputy problem?

> The reason I did it this way is that, when I wanted to do ipc, it feels 
> natural to pass the thread id. You might argue that the capability id 
> could have been the same as the thread id, well in this way I managed to 
> differentiate concepts from each other, and it felt that a user of the 
> interface also benefits by not having to know about capabilities at all 
> (provided that they're initially configured correctly of course).
> 
> 

I also think this is the more natural thing. But see my above comment on 
why I think it is the wrong *fundamental* abstraction.