Restoring child with checkpointed state

David Werner wernerd at ...389...
Thu Jun 29 15:08:18 CEST 2017


Hi Stefan,

>> As being said, this specific IRQ object is part of the SIGNAL session
>> and its client state. I'm not sure how your restore mechanism works
>> exactly, but if work is done within the component that gets restored,
>> you can do the re-attachment there. Otherwise, you would need to change
>> the request_semaphore call. So that the information of which thread gets
>> attached is part of the server side in core. Instead of attaching to the
>> IRQ object itself, the signal handler thread transfers its identity to
>> core via request_semaphore. Core attaches the thread and delivers the
>> capability. Whenever request_semaphore is called, you detach formerly
>> attached threads, as well as when the session is closed.
>> Does that make sense for you?
At the moment the l4_irq_attach(...) call takes place in the constructor 
of Signal_source_client.
[/repos/base-foc/src/lib/base/signal_source_client.cc].

The call needs two Fiasco::l4_cap_idx_t (kcap) to determine the IRQ 
object and the thread which should be attached to it.

When moving the l4_irq_attach call to the server side, these kcaps are 
obviously different to the ones at client side.
For the IRQ i simply use the _blocking_semaphore native capability to 
find out the kcap. But i failed to find a way to
determine the kcap of the thread at the server side.

Therefore my question is if you could you go in a bit more detail about 
how you would realize the "transfer its identity to core" part.
Do i have to transfer the  thread name, its capability or something else?

I tried a few things but i couldn't make it work.

Kind Regards,
David




More information about the users mailing list