lib: tevent: make TEVENT_SIG_INCREMENT atomic.
authorJeremy Allison <jra@samba.org>
Tue, 3 Jun 2014 17:44:19 +0000 (10:44 -0700)
committerJeremy Allison <jra@samba.org>
Sat, 7 Jun 2014 01:15:14 +0000 (03:15 +0200)
commit46cb7c2f84ab14e807220ccdd351a17ec141834f
treef0f403f688faa1231cba29922de56a71d6f4f578
parent990ac370b4ec9eadd4bd87359de64fc78c806c8c
lib: tevent: make TEVENT_SIG_INCREMENT atomic.

On arm platforms incrementing a variable is not
an atomic operation, so may be interrupted by
signal processing (if a signal interrupts another
signal handler).

Use compiler built-ins to make this atomic.
__sync_fetch_and_add() works on gcc, llvm,
IBM xlC on AIX, and Intel icc (10.1 and
above).

atomic_add_32() works on Oracle Solaris.

Based on an inital patch from kamei@osstech.co.jp.

Bug #10640 - smbd is not responding - tevent_common_signal_handler() increments non-atomic variables

https://bugzilla.samba.org/show_bug.cgi?id=10640

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <Volker.Lendecke@SerNet.DE>