On 04/11/2012 06:38 PM, Torvald Riegel wrote:
On Wed, 2012-04-11 at 15:06 +0200, Andi Kleen wrote:
Perhaps HLE_ACQUIRE / HLE_RELEASE should be something like HLE_START /
HLE_END instead? Not particularly great names, but at least it avoids
overloading ACQUIRE/RELEASE and thus should make it clearer that you
still need to specify a memory order.
Does it make any sense to simply predefine the possible valid
combinations with the HLE bit already set? it at least removes any
possible invalid combinations and forces the programmer to consciously
choose their memory model.
ie,
__ATOMIC_HLE_XACQ_CONSUME
__ATOMIC_HLE_XACQ_ACQUIRE
__ATOMIC_HLE_XACQ_ACQ_REL
__ATOMIC_HLE_XACQ_SEQ_CST
__ATOMIC_HLE_XREL_RELEASE
__ATOMIC_HLE_XREL_ACQ_REL
__ATOMIC_HLE_XREL_SEQ_CST
or whatever happens to be valid... Doesn't really scale to adding more
new bits later, but perhaps that doesn't matter.
Just a thought.
Andrew