Comparing IPC and capability invocation

Rudy Koot rudykoot at
Fri Dec 12 13:01:04 CET 2003

I've been following this discussion and I first want to say that I agree 
that threads should be virtual objects. The cuse of thread IDs on L4 now 
requires eiter the receiver to check if the sender had the rights to send to 
it or the use of IPC redirection. Both methodes make it easy for security 
holes to creep into the code and are (as you correctly pointed out) even 
slower than using virtual objects. And if the map, grant and unmap 
operations can be used on them they are even more flexible than the current 

I'm however still doubting wherer EROS capabilities are necessary, because I 
believe the arguments you have given are entierly correct

>In L4, if a client wishes to perform an operation on a file, the "name"
>of the file must be passed as an argument to an IPC. The invocation is
>something like:
>    file_server->invoke(file-id, operation-id, ... other args ...)

>In EROS, the corresponding invocation would be:
>   file_capability->invoke(operation-id, ... other args ...)

While this might be true at the lowest level, high level abstactions will 
geneally hide this fact from you, making this only an aestatic argument 
unless you can tell me why one of them is technically better/safer. And I 
think the examples you give here have been given in a form that is more 
favorable for de EROS case. The true inkovations would normally look more 
like this:

invoke(file_server_thread, file_id, operation_id, other_args)
invoke(file_capability, operation_id, other_args)

Again I want to stress that this is normally hidden by the high level 
language interface.

Some interessting thing can also be done with alternative designs. For 
example the open call op the file_server creates a new thread that handles 
the calls to that file. The calls would now look like this:

invoke(file_thread, operation_id, other_args)
invoke(file_capability, operation_id, other_args)

Looks pretty similar doesn't it. The difference is now that in L4 the 
messages are send to a collection of threads while in EROS it is only one 

  -- Rudy Koot

Play online games with your friends with MSN Messenger

More information about the l4-hackers mailing list