1.2 |
| 01-Dec-2019 |
riastradh | Adapt <sys/pslist.h> to use atomic_load/store_*.
Changes:
- membar_producer(); *p = v;
=>
atomic_store_release(p, v);
(Effectively like using membar_exit instead of membar_producer, which is what we should have been doing all along so that stores by the `reader' can't affect earlier loads by the writer, such as KASSERT(p->refcnt == 0) in the writer and atomic_inc(&p->refcnt) in the reader.)
- p = *pp; if (p != NULL) membar_datadep_consumer();
=>
p = atomic_load_consume(pp);
(Only makes a difference on DEC Alpha. As long as lists generally have at least one element, this is not likely to make a big difference, and keeps the code simpler and clearer.)
No other functional change intended. While here, annotate each synchronizing load and store with its counterpart in a comment.
|