Add atomic fetch-and-op and compare-exchange functions #4552
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates to atomics in opal:
Remove opal_atomic_cmpset_* operations.
Add new compare-exchange functions with signature that matches C11. These functions still return a boolean but take a pointer to the compare value. The old value is stored over the compare value.
Add atomic fetch-and-op functions. These replace the old op-and-fetch functions in the underlying atomic implementations. The old atomic arithmetic operations have been renamed from opal_atomic_op_* to opal_atomic_op_fetch_*.