summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest')
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch72
2 files changed, 100 insertions, 0 deletions
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
new file mode 100644
index 00000000..f5e7da35
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
@@ -0,0 +1,28 @@
+Fix compile on sytems using libc++ instead of libstdc++
+
+libc++ does not really implement __gnu_cxx namespace and it
+compiles fine without this namespace, therefore detect libc++
+and if it is used them exclude this namespace
+
+See https://github.com/stressapptest/stressapptest/issues/47
+
+Fixes
+
+./sattypes.h:33:17: error: expected namespace name
+using namespace __gnu_cxx; //NOLINT
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- stressapptest-1.0.9.orig/src/sattypes.h
++++ stressapptest-1.0.9/src/sattypes.h
+@@ -30,7 +30,9 @@
+ #include "stressapptest_config_android.h" // NOLINT
+ #else
+ #include "stressapptest_config.h" // NOLINT
++#ifndef _LIBCPP_VERSION
+ using namespace __gnu_cxx; //NOLINT
++#endif // _LIBCPP_VERSION
+ #endif // __ANDROID__
+ using namespace std;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
new file mode 100644
index 00000000..8c251aeb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
@@ -0,0 +1,72 @@
+sysconf params like _SC_LEVEL1_DCACHE_LINESIZE are not universally
+implemented, therefore check for them being available, if not there
+then read the sysfs directly to get the value
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/sat.cc
++++ b/src/sat.cc
+@@ -1482,15 +1482,47 @@ int Sat::CpuCount() {
+ return sysconf(_SC_NPROCESSORS_CONF);
+ }
+
++int Sat::ReadInt(const char *filename, int *value) {
++ char line[64];
++ int fd = open(filename, O_RDONLY), err = -1;
++
++ if (fd < 0)
++ return -1;
++ if (read(fd, line, sizeof(line)) > 0) {
++ *value = atoi(line);
++ err = 0;
++ }
++
++ close(fd);
++ return err;
++}
++
+ // Return the worst case (largest) cache line size of the various levels of
+ // cache actually prsent in the machine.
+ int Sat::CacheLineSize() {
+- int max_linesize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+- int linesize = sysconf(_SC_LEVEL2_CACHE_LINESIZE);
++ int max_linesize, linesize;
++#ifdef _SC_LEVEL1_DCACHE_LINESIZE
++ max_linesize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", &max_linesize);
++#endif
++#ifdef _SC_LEVEL2_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL2_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+- linesize = sysconf(_SC_LEVEL3_CACHE_LINESIZE);
++#ifdef _SC_LEVEL3_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL3_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+- linesize = sysconf(_SC_LEVEL4_CACHE_LINESIZE);
++#ifdef _SC_LEVEL4_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL4_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index3/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+ return max_linesize;
+ }
+--- a/src/sat.h
++++ b/src/sat.h
+@@ -136,7 +136,8 @@ class Sat {
+ int CpuCount();
+ // Return the worst-case (largest) cache line size of the system.
+ int CacheLineSize();
+-
++ // Read int values from kernel file system e.g. sysfs
++ int ReadInt(const char *filename, int *value);
+ // Collect error counts from threads.
+ int64 GetTotalErrorCount();
+