haproxy/include/import
Willy Tarreau 8178a5211c MAJOR: threads/plock: update the embedded library again
This updates the local copy of the plock library to benefit from finer
memory ordering, EBO on more operations such as when take_w() and stow()
wait for readers to leave  and refined EBO, especially on common operation
such as attempts to upgade R to S, and avoids a counter-productive prior
read in rtos() and take_r().

These changes have shown a 5% increase on regular operations on ARM,
a 33% performance increase on ARM on stick-tables and 2% on x86, and
a 14% and 4% improvements on peers updates respectively on ARM and x86.

The availability of relaxed operations will probably be useful for stats
counters which are still extremely expensive to update.

The following plock commits were included in this update:

  9db830b plock: support inlining exponential backoff code
  008d3c2 plock: make the rtos upgrade faster
  2f76dde atomic: clean up the generic xchg()
  3c6919b atomic: make sure that the no-return macros do not return a value
  97c2bb7 atomic: make the fallback bts use the pointed type for the shift
  f4c1880 atomic: also implement the missing pl_btr()
  8329b82 atomic: guard all generic definitions to make it easier to provide specific ones
  7c5cb62 atomic: use C11 atomics when available
  96afaf9 atomic: prefer the C11 definitions in general
  f3ec7a6 atomic: implement load/store/atomic barriers
  8bdbd1e atomic: add atomic load/stores
  0f604c0 atomic: add more _noret operations
  3fe35db atomic: remove the (void) cast from the C11 operations
  3b08a7c atomic: allow to define the fallback _noret variants
  28deb22 atomic: make x86 arithmetic operations the _noret variants
  8061fe2 atomic: handle modern compilers that support returning flags
  b8b91b7 atomic: add the fetch-and-<op> operations (pl_ld<op>)
  59817ca atomic: add memory order variants for most operations
  a40774f plock: explicitly make use of the pl_*_noret operations
  6f1861b plock: switch to pl_sub_noret_lax() for cancellation
  c013980 plock: use pl_ldadd{_lax,_acq,} instead of pl_xadd()
  382eea3 plock: use a release ordering when dropping the lock
  60d750d plock: use EBO when waiting for readers to leave in take_w() and stow()
  fc01c4f plock: improve EBO a little bit
  1ef6390 plock: switch to CAS + XADD for pl_take_r()
2023-08-11 19:03:35 +02:00
..
atomic-ops.h MAJOR: threads/plock: update the embedded library again 2023-08-11 19:03:35 +02:00
eb32sctree.h
eb32tree.h
eb64tree.h
ebimtree.h
ebistree.h
ebmbtree.h OPTIM: ebtree: make ebmb_insert_prefix() keep a copy the new node's key 2022-11-15 09:37:09 +01:00
ebpttree.h
ebsttree.h
ebtree-t.h
ebtree.h
ist.h MINOR: ist: add new function ist_find_range() to find a character range 2023-08-08 19:10:54 +02:00
lru.h
mjson.h
plock.h MAJOR: threads/plock: update the embedded library again 2023-08-11 19:03:35 +02:00
sha1.h
slz-tables.h IMPORT: slz: define and use a __fallthrough statement for switch/case 2022-11-14 11:14:02 +01:00
slz.h IMPORT: slz: implement a synchronous flush() operation 2023-06-30 16:12:36 +02:00
xxhash.h CLEANUP: assorted typo fixes in the code and comments 2022-11-30 14:02:36 +01:00