summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2022-12-17 11:00:27 -0800
committerKhem Raj <raj.khem@gmail.com>2022-12-17 11:01:26 -0800
commite0a389a66068e64118c45a4583ae07727f620a0c (patch)
treedd95029b6c301b106c3c61cef0df426589bcb3a0
parent4580e951a19a81ebbd0fd9705311c4b7d70cef73 (diff)
downloadmeta-openembedded-e0a389a66068e64118c45a4583ae07727f620a0c.tar.gz
stressapptest: Fix build with largefile support and musl
Update status of patches as they are submitted upstream Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest/0001-configure-Add-with-cpu.patch37
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest/0002-Replace-lfs64-functions-and-defines.patch103
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest/0003-configure-Check-for-pthread_rwlockattr_setkind_np-be.patch43
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch2
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch2
-rw-r--r--meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb10
6 files changed, 194 insertions, 3 deletions
diff --git a/meta-oe/recipes-benchmark/stressapptest/stressapptest/0001-configure-Add-with-cpu.patch b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0001-configure-Add-with-cpu.patch
new file mode 100644
index 0000000000..41fb456c6c
--- /dev/null
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0001-configure-Add-with-cpu.patch
@@ -0,0 +1,37 @@
1From 73049e5a9e3698cc6d51471d70ac5e06bed803cc Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 17 Dec 2022 10:24:48 -0800
4Subject: [PATCH] configure: Add --with-cpu
5
6Some cross build systems e.g. yocto may use architectures different from cross compiler target tuple
7arm-yoe-gnueabi but build for armv7a, AC_CANONICAL_HOST will fail in
8this case even though target will be armv7a it will detect it as arm and
9disable armv7a specific optimization paths. This option provides the
10needed knob so it can be set explicitly e.g. --with-cpu=armv7a etc. if needed.
11
12Upstream-Status: Submitted [https://github.com/stressapptest/stressapptest/pull/100]
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 configure.ac | 9 ++++++++-
16 1 file changed, 8 insertions(+), 1 deletion(-)
17
18diff --git a/configure.ac b/configure.ac
19index c839c87..403728c 100644
20--- a/configure.ac
21+++ b/configure.ac
22@@ -11,7 +11,14 @@ else
23 AC_MSG_NOTICE([Compiling with dynamically linked libraries.])
24 fi
25
26-AC_CANONICAL_HOST
27+AC_ARG_WITH(cpu, [ --with-cpu define host cpu])
28+
29+if test -z "$with_cpu"
30+then
31+ AC_CANONICAL_HOST
32+else
33+ host_cpu=$with_cpu
34+fi
35 # Checking for target cpu and setting custom configuration
36 # for the different platforms
37 AS_CASE(["$host_cpu"],
diff --git a/meta-oe/recipes-benchmark/stressapptest/stressapptest/0002-Replace-lfs64-functions-and-defines.patch b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0002-Replace-lfs64-functions-and-defines.patch
new file mode 100644
index 0000000000..48ff3ef93b
--- /dev/null
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0002-Replace-lfs64-functions-and-defines.patch
@@ -0,0 +1,103 @@
1From 9ab360fd018d267fe174713d7e14454408b26043 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 17 Dec 2022 10:33:01 -0800
4Subject: [PATCH] Replace lfs64 functions and defines
5
6AC_SYS_LARGEFILE is already in use in configure.ac which detects
7enabling lfs64 functions as needed, it will define _FILE_OFFSET_BITS=64
8which should make lseek same as lseek64 since off_t is 64bit on most of
9current 32bit linux platforms
10
11Upstream-Status: Submitted [https://github.com/stressapptest/stressapptest/pull/100]
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13---
14 src/os.cc | 18 ++++++------------
15 src/worker.cc | 6 +++---
16 2 files changed, 9 insertions(+), 15 deletions(-)
17
18diff --git a/src/os.cc b/src/os.cc
19index 1928e0a..faa6068 100644
20--- a/src/os.cc
21+++ b/src/os.cc
22@@ -142,7 +142,7 @@ int OsLayer::AddressMode() {
23 uint64 OsLayer::VirtualToPhysical(void *vaddr) {
24 uint64 frame, paddr, pfnmask, pagemask;
25 int pagesize = sysconf(_SC_PAGESIZE);
26- off64_t off = ((uintptr_t)vaddr) / pagesize * 8;
27+ off_t off = ((uintptr_t)vaddr) / pagesize * 8;
28 int fd = open(kPagemapPath, O_RDONLY);
29
30 /*
31@@ -154,7 +154,7 @@ uint64 OsLayer::VirtualToPhysical(void *vaddr) {
32 if (fd < 0)
33 return 0;
34
35- if (lseek64(fd, off, SEEK_SET) != off || read(fd, &frame, 8) != 8) {
36+ if (lseek(fd, off, SEEK_SET) != off || read(fd, &frame, 8) != 8) {
37 int err = errno;
38 string errtxt = ErrorString(err);
39 logprintf(0, "Process Error: failed to access %s with errno %d (%s)\n",
40@@ -607,9 +607,9 @@ bool OsLayer::AllocateTestMem(int64 length, uint64 paddr_base) {
41 dynamic_mapped_shmem_ = true;
42 } else {
43 // Do a full mapping here otherwise.
44- shmaddr = mmap64(NULL, length, PROT_READ | PROT_WRITE,
45- MAP_SHARED | MAP_NORESERVE | MAP_LOCKED | MAP_POPULATE,
46- shm_object, 0);
47+ shmaddr = mmap(NULL, length, PROT_READ | PROT_WRITE,
48+ MAP_SHARED | MAP_NORESERVE | MAP_LOCKED | MAP_POPULATE,
49+ shm_object, 0);
50 if (shmaddr == reinterpret_cast<void*>(-1)) {
51 int err = errno;
52 string errtxt = ErrorString(err);
53@@ -704,18 +704,12 @@ void *OsLayer::PrepareTestMem(uint64 offset, uint64 length) {
54 if (dynamic_mapped_shmem_) {
55 // TODO(nsanders): Check if we can support MAP_NONBLOCK,
56 // and evaluate performance hit from not using it.
57-#ifdef HAVE_MMAP64
58- void * mapping = mmap64(NULL, length, PROT_READ | PROT_WRITE,
59- MAP_SHARED | MAP_NORESERVE | MAP_LOCKED | MAP_POPULATE,
60- shmid_, offset);
61-#else
62 void * mapping = mmap(NULL, length, PROT_READ | PROT_WRITE,
63 MAP_SHARED | MAP_NORESERVE | MAP_LOCKED | MAP_POPULATE,
64 shmid_, offset);
65-#endif
66 if (mapping == MAP_FAILED) {
67 string errtxt = ErrorString(errno);
68- logprintf(0, "Process Error: PrepareTestMem mmap64(%llx, %llx) failed. "
69+ logprintf(0, "Process Error: PrepareTestMem mmap(%llx, %llx) failed. "
70 "error: %s.\n",
71 offset, length, errtxt.c_str());
72 sat_assert(0);
73diff --git a/src/worker.cc b/src/worker.cc
74index 745a816..41e93a0 100644
75--- a/src/worker.cc
76+++ b/src/worker.cc
77@@ -1705,7 +1705,7 @@ bool FileThread::WritePages(int fd) {
78 int strict = sat_->strict();
79
80 // Start fresh at beginning of file for each batch of pages.
81- lseek64(fd, 0, SEEK_SET);
82+ lseek(fd, 0, SEEK_SET);
83 for (int i = 0; i < sat_->disk_pages(); i++) {
84 struct page_entry src;
85 if (!GetValidPage(&src))
86@@ -1943,7 +1943,7 @@ bool FileThread::ReadPages(int fd) {
87 bool result = true;
88
89 // Read our data back out of the file, into it's new location.
90- lseek64(fd, 0, SEEK_SET);
91+ lseek(fd, 0, SEEK_SET);
92 for (int i = 0; i < sat_->disk_pages(); i++) {
93 struct page_entry dst;
94 if (!GetEmptyPage(&dst))
95@@ -3153,7 +3153,7 @@ bool DiskThread::ValidateBlockOnDisk(int fd, BlockData *block) {
96
97 // Read block from disk and time the read. If it takes longer than the
98 // threshold, complain.
99- if (lseek64(fd, address * kSectorSize, SEEK_SET) == -1) {
100+ if (lseek(fd, address * kSectorSize, SEEK_SET) == -1) {
101 logprintf(0, "Process Error: Unable to seek to sector %lld in "
102 "DiskThread::ValidateSectorsOnDisk on disk %s "
103 "(thread %d).\n", address, device_name_.c_str(), thread_num_);
diff --git a/meta-oe/recipes-benchmark/stressapptest/stressapptest/0003-configure-Check-for-pthread_rwlockattr_setkind_np-be.patch b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0003-configure-Check-for-pthread_rwlockattr_setkind_np-be.patch
new file mode 100644
index 0000000000..b21a534d94
--- /dev/null
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest/0003-configure-Check-for-pthread_rwlockattr_setkind_np-be.patch
@@ -0,0 +1,43 @@
1From d64a282b57352dde5f5b007947c005e504dc9a6b Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 17 Dec 2022 10:46:31 -0800
4Subject: [PATCH] configure: Check for pthread_rwlockattr_setkind_np before use
5
6musl does not implement this therefore detect this non-posix API before
7using it
8
9Upstream-Status: Submitted [https://github.com/stressapptest/stressapptest/pull/100]
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 configure.ac | 1 +
13 src/worker.cc | 2 ++
14 2 files changed, 3 insertions(+)
15
16diff --git a/configure.ac b/configure.ac
17index 403728c..47968cb 100644
18--- a/configure.ac
19+++ b/configure.ac
20@@ -157,6 +157,7 @@ AC_FUNC_STRERROR_R
21 AC_FUNC_VPRINTF
22 AC_CHECK_FUNCS([ftruncate gettimeofday memset munmap select socket strtol strtoull])
23 AC_CHECK_FUNCS([mmap64 posix_memalign rand_r sched_getaffinity])
24+AC_CHECK_FUNCS([pthread_rwlockattr_setkind_np])
25
26 AC_CONFIG_FILES([Makefile src/Makefile])
27 AC_OUTPUT
28diff --git a/src/worker.cc b/src/worker.cc
29index 41e93a0..c4abc87 100644
30--- a/src/worker.cc
31+++ b/src/worker.cc
32@@ -133,9 +133,11 @@ void WorkerStatus::Initialize() {
33
34 pthread_rwlockattr_t attrs;
35 sat_assert(0 == pthread_rwlockattr_init(&attrs));
36+#ifdef HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP
37 // Avoid writer lock starvation.
38 sat_assert(0 == pthread_rwlockattr_setkind_np(
39 &attrs, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP));
40+#endif
41 sat_assert(0 == pthread_rwlock_init(&status_rwlock_, &attrs));
42
43 #ifdef HAVE_PTHREAD_BARRIERS
diff --git a/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch b/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
index f5e7da359d..8754e40697 100644
--- a/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
@@ -11,7 +11,7 @@ Fixes
11./sattypes.h:33:17: error: expected namespace name 11./sattypes.h:33:17: error: expected namespace name
12using namespace __gnu_cxx; //NOLINT 12using namespace __gnu_cxx; //NOLINT
13 13
14Upstream-Status: Pending 14Upstream-Status: Submitted [https://github.com/stressapptest/stressapptest/pull/100]
15Signed-off-by: Khem Raj <raj.khem@gmail.com> 15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16 16
17--- stressapptest-1.0.9.orig/src/sattypes.h 17--- stressapptest-1.0.9.orig/src/sattypes.h
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
index 8c251aeb97..19261657ac 100644
--- a/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
@@ -2,7 +2,7 @@ sysconf params like _SC_LEVEL1_DCACHE_LINESIZE are not universally
2implemented, therefore check for them being available, if not there 2implemented, therefore check for them being available, if not there
3then read the sysfs directly to get the value 3then read the sysfs directly to get the value
4 4
5Upstream-Status: Pending 5Upstream-Status: Submitted [https://github.com/stressapptest/stressapptest/pull/100]
6Signed-off-by: Khem Raj <raj.khem@gmail.com> 6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7--- a/src/sat.cc 7--- a/src/sat.cc
8+++ b/src/sat.cc 8+++ b/src/sat.cc
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 c8b9ca7cb9..02144c558a 100644
--- a/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
+++ b/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
@@ -13,10 +13,18 @@ SRCREV = "9146a8bfe3e3daefa95f7a61b75183e5fc64af2c"
13 13
14PV .= "+1.0.10git${SRCPV}" 14PV .= "+1.0.10git${SRCPV}"
15 15
16EXTRA_AUTOCONF:append:armv7a = " --with-cpu=armv7a"
17EXTRA_AUTOCONF:append:armv7ve = " --with-cpu=armv7a"
18
19GI_DATA_ENABLED:libc-musl:armv7a = "False"
20GI_DATA_ENABLED:libc-musl:armv7ve = "False"
16SRC_URI = "git://github.com/stressapptest/stressapptest;branch=master;protocol=https \ 21SRC_URI = "git://github.com/stressapptest/stressapptest;branch=master;protocol=https \
17 file://libcplusplus-compat.patch \ 22 file://libcplusplus-compat.patch \
18 file://read_sysfs_for_cachesize.patch \ 23 file://read_sysfs_for_cachesize.patch \
19 " 24 file://0001-configure-Add-with-cpu.patch \
25 file://0002-Replace-lfs64-functions-and-defines.patch \
26 file://0003-configure-Check-for-pthread_rwlockattr_setkind_np-be.patch \
27 "
20 28
21S = "${WORKDIR}/git" 29S = "${WORKDIR}/git"
22 30