lkml.org 
[lkml]   [2019]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH tip/core/rcu 1/9] rcu: Upgrade rcu_swap_protected() to rcu_replace()
----- On Oct 3, 2019, at 9:08 AM, rostedt rostedt@goodmis.org wrote:

> On Thu, 03 Oct 2019 09:39:17 +0100
> David Howells <dhowells@redhat.com> wrote:
>
>> paulmck@kernel.org wrote:
>>
>> > +#define rcu_replace(rcu_ptr, ptr, c) \
>> > +({ \
>> > + typeof(ptr) __tmp = rcu_dereference_protected((rcu_ptr), (c)); \
>> > + rcu_assign_pointer((rcu_ptr), (ptr)); \
>> > + __tmp; \
>> > +})
>>
>> Does it make sense to actually use xchg() if that's supported by the arch?
>>
>
> Hmm, is there really any arch that doesn't support xchg()? It would be
> very hard to do any kind of atomic operations without it.
>
> cmpxchg() is the one that I understand is optional by the arch.

I remember going through all kernel arch headers myself and introduce
irq-off-based xchg and cmpxchg generic implementations for all UP
architectures lacking cmpxchg/xchg instructions.

We might want to consider simply using xchg() here.

FWIW, the API exposed by the Userspace RCU project (liburcu) for this
is:

rcu_xchg_pointer()

Thanks,

Mathieu


--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

\
 
 \ /
  Last update: 2019-10-03 18:32    [W:0.269 / U:0.300 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site