haproxy/include/common
Willy Tarreau 6a38b3297c BUILD: threads: fix again the __ha_cas_dw() definition
This low-level asm implementation of a double CAS was implemented only
for certain architectures (x86_64, armv7, armv8). When threads are not
used, they were not defined, but since they were called directly from
a few locations, they were causing build issues on certain platforms
with threads disabled. This was addressed in commit f4436e1 ("BUILD:
threads: Add __ha_cas_dw fallback for single threaded builds") by
making it fall back to HA_ATOMIC_CAS() when threads are not defined,
but this actually made the situation worse by breaking other cases.

This patch fixes this by creating a high-level macro HA_ATOMIC_DWCAS()
which is similar to HA_ATOMIC_CAS() except that it's intended to work
on a double word, and which rely on the asm implementations when threads
are in use, and uses its own open-coded implementation when threads are
not used. The 3 call places relying on __ha_cas_dw() were updated to
use HA_ATOMIC_DWCAS() instead.

This change was tested on i586, x86_64, armv7, armv8 with and without
threads with gcc 4.7, armv8 with gcc 5.4 with and without threads, as
well as i586 with gcc-3.4 without threads. It will need to be backported
to 1.9 along with the fix above to fix build on armv7 with threads
disabled.
2019-05-11 18:13:29 +02:00
..
accept4.h
base64.h
buf.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
buffer.h
cfgparse.h MINOR: cfgparse: make the process/thread parser support a maximum value 2019-01-26 13:25:14 +01:00
chunk.h BUILD: chunk: properly declare pool_head_trash as extern 2019-03-29 21:03:20 +01:00
compat.h MEDIUM: tcp: add the "tfo" option to support TCP fastopen on the server 2019-05-06 22:29:39 +02:00
compiler.h MINOR: compiler: add a new macro ALREADY_CHECKED() 2018-12-08 15:27:03 +01:00
config.h MINOR: debug: Add an option that causes random allocation failures. 2019-01-31 19:38:25 +01:00
debug.h MINOR: debug: make the ABORT_NOW macro use a volatile int 2018-12-16 08:17:23 +01:00
defaults.h MINOR: config: continue to rely on DEFAULT_MAXCONN to set the minimum maxconn 2019-03-13 10:10:49 +01:00
epoll.h
errors.h
h1.h BUG/MEDIUM: h1: Don't parse chunks CRLF if not enough data are available 2019-04-19 15:53:23 +02:00
h2.h BUG/MEDIUM: h2/htx: Correctly handle interim responses when HTX is enabled 2019-02-19 16:26:14 +01:00
hash.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hathreads.h BUILD: threads: fix again the __ha_cas_dw() definition 2019-05-11 18:13:29 +02:00
hpack-dec.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-enc.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-huff.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-tbl.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
http-hdr.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
http.h BUILD: do not specify "const" on functions returning structs or scalars 2019-04-15 21:55:48 +02:00
htx.h MINOR: htx: Remove support for unused OOB HTX blocks 2019-05-07 22:16:41 +02:00
initcall.h MINOR: initcall: Don't forget to define the __start/stop_init_##stg symbols. 2019-04-10 16:33:25 +02:00
ist.h MEDIUM: ist: use local conversion arrays to case conversion 2018-12-07 13:25:59 +01:00
istbuf.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
memory.h BUILD: threads: fix again the __ha_cas_dw() definition 2019-05-11 18:13:29 +02:00
mini-clist.h MEDIUM: list: Use _HA_ATOMIC_* 2019-03-14 15:55:15 +01:00
namespace.h
net_helper.h
openssl-compat.h CLEANUP: ssl: move all BIO_* definitions to openssl-compat 2019-05-11 17:39:08 +02:00
regex.h MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
splice.h
standard.h CLEANUP: standard: use proper const to addr_to_str() and port_to_str() 2019-04-25 17:48:16 +02:00
syscall.h
template.h
ticks.h
time.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
tools.h
uri_auth.h
version.h BUILD: add a new file "version.c" to carry version updates 2019-01-04 18:20:32 +01:00
xref.h MEDIUM: xref: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +01:00