diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch')
-rw-r--r-- | meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch new file mode 100644 index 000000000..aca7e803d --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch @@ -0,0 +1,46 @@ +From 9ff04d7acc700387e3837f8ab11a41efea5ee8b0 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 21 Jun 2018 19:44:26 -0700 +Subject: [PATCH] alloc.c: Avoid sysconf(_SC_LEVEL2_CACHE_LINESIZE) on linux + +musl does not have it + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + alloc.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/alloc.c b/alloc.c +index bce9464..cf7eb40 100644 +--- a/alloc.c ++++ b/alloc.c +@@ -245,6 +245,19 @@ void free_huge_pages(void *ptr) + __free_huge_pages(ptr, 1); + } + ++static size_t get_cacheline_size() { ++#if defined(__linux__) ++ FILE * fp = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r"); ++ unsigned int line_size = 0; ++ if (fp) { ++ fscanf(fp, "%d", &line_size); ++ fclose(fp); ++ } ++ return line_size; ++#else ++ return sysconf(_SC_LEVEL2_CACHE_LINESIZE); ++#endif ++} + /* + * Offset the buffer using bytes wasted due to alignment to avoid using the + * same cache lines for the start of every buffer returned by +@@ -261,7 +274,7 @@ void *cachecolor(void *buf, size_t len, size_t color_bytes) + + /* Lookup our cacheline size once */ + if (cacheline_size == 0) { +- cacheline_size = sysconf(_SC_LEVEL2_CACHE_LINESIZE); ++ cacheline_size = get_cacheline_size(); + linemod = time(NULL); + } + |