Input driver configuration and use in L4Re

Paul Boddie paul at boddie.org.uk
Fri May 25 00:06:10 CEST 2018


On Wednesday 23. May 2018 00.21.23 Paul Boddie wrote:
>

[L4_IPC_SEMSGCUT ("Cut send message") condition]

> I think I figured out what causes this particular error condition: the
> Registry_server class needs parameterising with Br_manager_hooks instead of
> the default hooks. Providing a parameterised Demand_t class amongst the
> template parameters for Kobject_t seems to then allocate space for an
> incoming capability. These two details are in some examples, but their
> purposes aren't clearly stated.
> 
> Unfortunately, I can't get the sent capability to be recognised. Reading a
> Snd_fpage instance from the IPC stream seems successful, but the item is
> not considered valid. I'm wondering if I need to declare something
> somewhere else, here, and perhaps pkg/examples/sys/map_irq holds the key
> to this, but I don't really follow the mechanism.

I figured this out eventually as well. It turns out that the Iostream classes 
don't support reading sent items from the stream using the operators (and 
perhaps not even using "normal" methods). So, as soon as all the words have 
been read from the message registers, only "null" items are returned.

Of course, the sent items are present in the message registers, and so it 
becomes necessary to inquire about the number of words and items, then the 
data can be read out and presented to the L4::Ipc::Snd_item constructor. 
Assignment to a L4::Ipc::Snd_fpage reference makes the sent capability 
available, and the rcv_cap and realloc_rcv_cap dance that is apparently 
necessary can then be performed. (This latter act needs the support of 
Br_manager_hooks, it would seem.)

I guess the more fancy RPC mechanisms automate this somehow, but I don't find 
the code very easy to follow. Since there is an operator method for obtaining 
Snd_item values from input streams, I would have thought that this would have 
worked and that the other mechanisms would have been using it, too, but I 
guess this isn't the case.

Paul




More information about the l4-hackers mailing list