[oe-commits] [meta-openembedded] 02/07: stressapptest: Implement reading sysfs and use it if sysconf is not there

git at git.openembedded.org git at git.openembedded.org
Mon Jun 17 05:52:50 UTC 2019


This is an automated email from the git hooks/post-receive script.

khem pushed a commit to branch master-next
in repository meta-openembedded.

commit 5673dae7b2b9f87197c6d24b4687b03959b0d7e7
Author: Khem Raj <raj.khem at gmail.com>
AuthorDate: Sun Jun 16 22:14:17 2019 -0700

    stressapptest: Implement reading sysfs and use it if sysconf is not there
    
    This helps in building on musl platform where _SC_LEVEL1_DCACHE_LINESIZE
    is not available
    
    Signed-off-by: Khem Raj <raj.khem at gmail.com>
---
 .../stressapptest/read_sysfs_for_cachesize.patch   | 72 ++++++++++++++++++++++
 .../stressapptest/stressapptest_1.0.9.bb           |  1 +
 2 files changed, 73 insertions(+)

diff --git a/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch b/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
new file mode 100644
index 0000000..8c251ae
--- /dev/null
+++ b/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 at 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-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb b/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
index 679201c..aa1bf1c 100644
--- a/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
@@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=55ea9d559f985fb4834317d8ed6b9e58"
 
 SRC_URI = "https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz \
            file://libcplusplus-compat.patch \
+           file://read_sysfs_for_cachesize.patch \
           "
 
 SRC_URI[md5sum] = "d3a526c174c049dd7a1068dc74a62be2"

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list