lkml.org 
[lkml]   [2015]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Compilers and RCU readers: Once more unto the breach!
On Tue, May 19, 2015 at 05:55:10PM -0700, Paul E. McKenney wrote:
> Hello!
>
> Following up on last year's discussion (https://lwn.net/Articles/586838/,
> https://lwn.net/Articles/588300/), I believe that we have a solution. If
> I am wrong, I am sure you all will let me know, and in great detail. ;-)
>
> The key simplification is to "just say no" to RCU-protected array indexes:
> https://lkml.org/lkml/2015/5/12/827, as was suggested by several people.
> This simplification means that rcu_dereference (AKA memory_order_consume)
> need only return pointers. This in ture avoids things like (x-x),
> (x*0), and (x%1) because if "x" is a pointer, these expressions either
> return non-pointers are compilation errors. With a very few exceptions,
> dependency chains can lead -to- non-pointers, but cannot pass -through-
> them.
>
> The result is that dependencies are carried only by operations for
> which the compiler cannot easily optimize the away those dependencies,
> these operations including simple assignment, integer offset (including
> indexing), dereferencing, casts, passing as a function argument, return
> values from functions and so on. A complete list with commentary starts
> on page 28 of:
>
> http://www.rdrop.com/users/paulmck/RCU/consume.2015.05.18a.pdf

And an update is available here:

http://www.rdrop.com/users/paulmck/RCU/consume.2015.07.13a.pdf

Among other things, this update addresses the points about equality
comparisons introduced by the compiler, and outlines some of the
issues head-/tail-marked alternatives face with respect to abstraction.
The updated "Restricted Dependency Chains" section starts on page 28.

Thoughts?

Thanx, Paul



\
 
 \ /
  Last update: 2015-07-14 03:01    [W:0.118 / U:0.268 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site