On Wednesday 16. May 2018 00.37.32 Paul Boddie wrote:
But I cannot figure out how to have the client create the interrupt and send it to the server, which would be a prerequisite for implementing the necessary interrupt mechanism for events, as far as I can tell. Presenting a capability instance (L4::CapL4::Irq) to the IPC stream, which should then result in a Snd_fpage instance being queued, just causes the 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.
Paul