[lttng-dev] QSBR urcu read lock question

lbj lbj137 at yahoo.com
Thu Apr 15 14:11:57 EDT 2021


Thanks Mathieu. Is it safe to assume that if call_rcu is called twice then the callbacks are executed in the order that call_rcu was invoked? I think there is a queue and only one thread that QSBR uses to handle callbacks, i just wanted to make sure that the queue was a guaranteed fifo. 

Sent from my iPhone

> On Apr 15, 2021, at 12:00 PM, Mathieu Desnoyers <mathieu.desnoyers at efficios.com> wrote:
> 
> ----- On Apr 15, 2021, at 10:54 AM, lbj lbj137 at yahoo.com wrote:
> 
>> Mathieu,
>> Thanks so much for your wealth if information and timely responses, they are
>> greatly appreciated. Final question: is there any harm in explicitly calling
>> rcu_thread_online/rcu_thread_offline from within my call_rcu callback function?
>> From what you described it sounds like it would be redundant, but presumably
>> would be harmless. Correct? Thanks again.
> 
> You could indeed invoke pairs of:
> 
>  rcu_thread_offline();   <--- emphasis on _offline_ here.
>  [ long wait ... ]
>  rcu_thread_online();
> 
> in that specific order within the call-rcu worker thread. Note that the qsbr state
> of the call-rcu worker thread is "online" when it invokes the callbacks, so each callback
> should make sure that state is back to "online" before it returns control back
> to its caller.
> 
> Thanks,
> 
> Mathieu
> 
> -- 
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com



More information about the lttng-dev mailing list