[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
On Wed, Nov 06, 2019 at 06:57:07AM -0800, Jason Thorpe wrote:
> > On Nov 6, 2019, at 5:41 AM, Kamil Rytarowski <n54%gmx.com@localhost> wrote:
> > On 06.11.2019 14:37, Jason Thorpe wrote:
> >>> On Nov 6, 2019, at 4:45 AM, Kamil Rytarowski <n54%gmx.com@localhost> wrote:
> >>> I propose __write_relaxed() / __read_relaxed().
> >> ...except that seems to imply the opposite of what these do.
> >> -- thorpej
> > Rationale?
> > This matches atomic_load_relaxed() / atomic_write_relaxed(), but we do
> > not deal with atomics here.
> Fair enough. To me, the names suggest "compiler is allowed to apply relaxed constraints and tear the access if it wants".... But apparently the common meaning is "relax, bro, I know what I'm doing". If that's the case, I can roll with it.
After reading this conversation, I'm not sure of the semantics.
I *think* the intention is for __read_once()/__write_once() to
load/store the entire variable from/to memory precisely once. They
provide no guarantees about atomicity of the load/store. Should
something be said about ordering and visibility of stores?
If x is initialized to 0xf00dd00f, two threads start, and thread
1 performs __read_once(x) concurrently with thread 2 performing
__write_once(x, 0xfeedbeef), then what values can thread 1 read?
Do __read_once()/__write_once() have any semantics with respect to
dyoung%pobox.com@localhost Urbana, IL (217) 721-9981
Main Index |
Thread Index |