diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-benchmark/stressapptest')
3 files changed, 121 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch b/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch new file mode 100644 index 000000000..f5e7da359 --- /dev/null +++ b/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/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch b/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch new file mode 100644 index 000000000..8c251aeb9 --- /dev/null +++ b/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(); + diff --git a/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb b/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb new file mode 100644 index 000000000..a2966e99d --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb @@ -0,0 +1,21 @@ +SUMMARY = "Stressful Application Test" +DESCRIPTION = "Stressful Application Test (or stressapptest, its unix name) \ + is a memory interface test. It tries to maximize randomized traffic to memory \ + from processor and I/O, with the intent of creating a realistic high load \ + situation in order to test the existing hardware devices in a computer. \ +" +HOMEPAGE = "https://github.com/stressapptest/stressapptest" +SECTION = "benchmark" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=55ea9d559f985fb4834317d8ed6b9e58" + +SRCREV = "fb72e5e5f0879231f38e0e826a98a6ca2d1ca38e" + +SRC_URI = "git://github.com/stressapptest/stressapptest \ + file://libcplusplus-compat.patch \ + file://read_sysfs_for_cachesize.patch \ + " + +S = "${WORKDIR}/git" + +inherit autotools |