__sync_lock_test_and_set on ARM

Phil Endecott spam_from_gcc_help_2@chezphil.org
Wed Sep 12 17:32:00 GMT 2007


Hi David,

David Daney wrote:
> Phil Endecott wrote:
>> This raises another issue, which is whether there is any way for code to 
>> determine which of the atomic builtins are provided, i.e. I'd like to 
>> write:
>> 
>> #if HAS__sync_lock_test_and_set
>> .. locking code using __sync_lock_test_and_set
>> #elseif HAS__sync_something_else
>> .. locking code using builtins that expand to LDREX and STREX
>> #else
>> #warn "no atomic ops, falling back to pthread mutex"
>> ...
>> #endif
>> 
>
> The proper symbol to test would be something like: 
> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 or 
> __GCC_HAVE_SYNC_LOCK_TEST_AND_SET_4  they are automatically set by GCC 
> when the builtin functions are available.

Really?  I don't see anything like that in the output of

gcc -dM -E - < /dev/null|grep -i sync
or
grep -R HAVE_SYNC /usr/include/

on my x86 system, which does have a selection of atomic builtins.

Regards,

Phil.






More information about the Gcc-help mailing list