Re: examples/libs/l4re/c++/shared_ds/ds_clnt.cc

Björn Döbel <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>

Am 10.10.2014 um 16:45 schrieb teclis High Elf:
>  From examples/libs/l4re/c++/shared_ds/ds_clnt.cc
>
> line 49 : L4::Cap<L4::Irq> irq = L4Re::Util::cap_alloc.alloc<L4::Irq>();
>
> It seems this template name L4::Cap and the function name
> L4Re::Util::cap_alloc are a bit misleading or only designate a sub-set
> of the objects functionality. In this line you are not just requesting
> permissions but getting a Unix style file handle that you then use to
> issue commands to the server on line 92:
>
> irq->trigger();
>
> Is my understanding correct?

No. Unfortunately not.

 > At line 49 you are opening L4 equivalent of
> a Unix style file handle for sending commands to a server and not
> requesting permissions or am I over simplifying.

There are two steps to accessing a kernel object (such as a software 
IRQ) in Fiasco. First you need to find a suitable spot in the 
process-local capability table to map the object to. Then, in a second 
step, you actually allocate the respective kernel object into this slot.

The line you are referring to only performs the first step (hence this 
is called cap_alloc.alloc()). The mapping from a real IRQ object to this 
capability is hidden in the svr->get_shared_buffer() call further down 
the line.

Bjoern
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.