mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-21 13:16:57 +00:00
The hathreads.h file has quickly become a total mess because it contains thread definitions, atomic operations and locking operations, all this for multiple combinations of threads, debugging and architectures, and all this done with random ordering! This first patch extracts all the atomic ops code from hathreads.h to move it to haproxy/atomic.h. The code there still contains several sections based on non-thread vs thread, and GCC versions in the latter case. Each section was arranged in the exact same order to ease finding. The redundant HA_BARRIER() which was the same as __ha_compiler_barrier() was dropped in favor of the latter which follows the naming convention of all other barriers. It was only used in freq_ctr.c which was updated. Additionally, __ha_compiler_barrier() was defined inconditionally but used only for thread-related operations, so it was made thread-only like HA_BARRIER() used to be. We'd still need to have two types of compiler barriers, one for the general case (e.g. signals) and another one for concurrency, but this was not addressed here. Some comments were added at the beginning of each section to inform about the use case and warn about the traps to avoid. Some files which continue to include hathreads.h solely for atomic ops should now be updated. |
||
---|---|---|
.. | ||
common | ||
haproxy | ||
import | ||
proto | ||
types |