AK: Allow alignment to cache line size with CACHE_ALIGNED

This is particularly important to avoid false sharing, which thrashes
performance when two process-shared atomics are on the same cache line.
This commit is contained in:
kleines Filmröllchen 2022-03-04 14:57:38 +01:00 committed by Linus Groh
parent d463f6e00a
commit 65b338ad04

View file

@ -110,3 +110,16 @@ extern "C" {
# define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC
# define CLOCK_REALTIME_COARSE CLOCK_REALTIME
#endif
#ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
# if ARCH(AARCH64) || ARCH(x86_64)
# define SYSTEM_CACHE_ALIGNMENT_SIZE 64
# else
# define SYSTEM_CACHE_ALIGNMENT_SIZE 128
# endif
#endif /* SYSTEM_CACHE_ALIGNMENT_SIZE */
#ifdef CACHE_ALIGNED
# undef CACHE_ALIGNED
#endif
#define CACHE_ALIGNED alignas(SYSTEM_CACHE_ALIGNMENT_SIZE)