Introducing a cmp() operation

Bernhard Kauer kauer at
Tue Jun 14 20:33:37 CEST 2005

> The second example was the reference counter, which
> is the more important one!  The above example you give is just the
> basic example, while the reference counter shows the bigger problem.

No, the answer for the reference counter problem is simple: cooperation.
Just as reminder:

Situation:  S -> C -> (1 reference) A -> B
Goal:             /-> (1 reference) A
            S-> C
	          \-> (1 reference) B

1. In the start situation A is trusted by B to provide the endpoint to S.
   Since A could unmap this endpoint everytime.

2. Therefore B can ask A for a new reference. Since A can not provide this
   service, it asks C and attaches a [1] return endpoint to B in its message.

3. C answers directly to B and maps them a new reference.

> > A transparent interpose of different endpoints with a
> > single one is otherwise not possible. 
> This just shows that reintroducing global IDs through the backdoor is
> ill-advised.

What are the global IDs? We do not have one.

I mean here that if everybody can do a cmp() it is possible to detect,
whether two "capabilities" pointing to endpoints, which are interposed
e.g. by a monitor, are the same or not.


[1] the endpoint where C send its reply to the RPC

More information about the l4-hackers mailing list