From 29719ace5192ff5c2d81c29d1947e32d7889f62b Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 14 Jun 2023 10:35:24 -0400 Subject: config: Add macros for false/true sharing sizes --- src/config.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/config.h') diff --git a/src/config.h b/src/config.h index dbe3c74..73348ac 100644 --- a/src/config.h +++ b/src/config.h @@ -191,6 +191,29 @@ static inline size_t flex_sizeof_impl(size_t align, size_t min, size_t offset, s return ret; } +/** + * False sharing/destructive interference/largest cache line size. + */ +#ifdef __GCC_DESTRUCTIVE_SIZE +# define FALSE_SHARING_SIZE __GCC_DESTRUCTIVE_SIZE +#else +# define FALSE_SHARING_SIZE 64 +#endif + +/** + * True sharing/constructive interference/smallest cache line size. + */ +#ifdef __GCC_CONSTRUCTIVE_SIZE +# define TRUE_SHARING_SIZE __GCC_CONSTRUCTIVE_SIZE +#else +# define TRUE_SHARING_SIZE 64 +#endif + +/** + * Alignment specifier that avoids false sharing. + */ +#define cache_align alignas(FALSE_SHARING_SIZE) + // Wrappers for attributes /** -- cgit v1.2.3