* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2020-10-07 3:44 Sam James
0 siblings, 0 replies; 9+ messages in thread
From: Sam James @ 2020-10-07 3:44 UTC (permalink / raw
To: gentoo-commits
commit: b6c66c490cff6d41c05fc82631345f2086e8b8df
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Sat Sep 26 11:51:24 2020 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Oct 7 03:43:01 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b6c66c49
dev-util/rt-tests: Bump version to v1.9
Announce message:
https://lkml.kernel.org/linux-rt-users/alpine.LFD.2.23.451.2009211516250.7550@fionn/
Package-Manager: Portage-3.0.4, Repoman-3.0.1
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Sam James <sam <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-1.9-musl.patch | 380 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-1.9.ebuild | 38 +++
3 files changed, 419 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 84387d38e3c..3a6f1eccd32 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
DIST rt-tests-1.8.tar.xz 105820 BLAKE2B 478ac14732393f718e6be818b82b24b1e53d2f293140012bc17fd1c9242bd885b4d70dca3c7f3187e9ba22334e5f83d9ad1993ab9f70079e1765b918deab4411 SHA512 41c0b18e84d1f76de22a4ab239d43ac678b8c8419b508c96204bef346734122b9a42df51fcea97b1e0675bd25ed1e262730236ec0cb189732d5810122e96aa39
+DIST rt-tests-1.9.tar.xz 112180 BLAKE2B fa9b7b70bd9ae5d5f5e1077ddbd916bc4556d079d4067f16289ab34fec16ed0c8074607a7a8e50ea7bad4df318a063074f1c0ec5c2e895851d3045d51a8ecd74 SHA512 66f086dbda31567e6dc5297424ec66b2c6bd7cb0e065c32e02c326f33967f3a301b1b34f9eb0dd0acd853279c64fb1c2bc271ac26648f4abc3f6090ba6484cfa
diff --git a/dev-util/rt-tests/files/rt-tests-1.9-musl.patch b/dev-util/rt-tests/files/rt-tests-1.9-musl.patch
new file mode 100644
index 00000000000..0114cd00447
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-1.9-musl.patch
@@ -0,0 +1,380 @@
+From fd78f200ac8e9d1eb7579cd9e4adaaa1a4dc2d46 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1 +
+ src/cyclictest/cyclictest.c | 68 ++++-----------------------
+ src/hackbench/hackbench.c | 4 +-
+ src/include/musl.h | 28 +++++++++++
+ src/lib/rt-utils.c | 1 +
+ src/pi_tests/classic_pi.c | 2 +
+ src/pi_tests/tst-mutexpi10.c | 2 +
+ src/pmqtest/pmqtest.c | 1 +
+ src/ptsematest/ptsematest.c | 1 +
+ src/rt-migrate-test/rt-migrate-test.c | 1 +
+ src/sched_deadline/cyclicdeadline.c | 2 +
+ 12 files changed, 50 insertions(+), 66 deletions(-)
+ create mode 100644 src/include/musl.h
+
+diff --git a/Makefile b/Makefile
+index c3ebbd7b2a2e..8815c113c0df 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -36,7 +35,6 @@ LDFLAGS ?=
+ PYLIB ?= $(shell python3 -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_lib())')
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -129,9 +127,6 @@ deadline_test: $(OBJDIR)/deadline_test.o $(OBJDIR)/librttest.a
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+diff --git a/src/backfire/sendme.c b/src/backfire/sendme.c
+index d963723b1c93..b355bbbcfece 100644
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -31,6 +31,7 @@
+ #include <errno.h>
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
++#include "musl.h"
+
+ #include <utmpx.h>
+ #include <sys/types.h>
+diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
+index b41d42f13f24..56b27a4e0547 100644
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -36,6 +36,7 @@
+ #include "rt_numa.h"
+
+ #include "rt-utils.h"
++#include "musl.h"
+
+ #include <bionic.h>
+
+@@ -501,12 +502,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop;
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -537,14 +534,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -599,20 +588,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -620,16 +595,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -751,11 +720,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -780,17 +744,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1305,7 +1258,8 @@ static void process_options (int argc, char *argv[], int max_cpus)
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1338,13 +1292,6 @@ static void process_options (int argc, char *argv[], int max_cpus)
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ #ifdef NUMA
+@@ -2038,7 +1985,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -2088,16 +2034,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+ /* get the stack size set for for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
+index 2cddff654df6..46f09fa9e7ba 100644
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -24,13 +24,15 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <limits.h>
+ #include <getopt.h>
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+diff --git a/src/include/musl.h b/src/include/musl.h
+new file mode 100644
+index 000000000000..ea5075e768c8
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
+index f786588706cd..c1a55272dfdb 100644
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -23,6 +23,7 @@
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "error.h"
++#include "musl.h"
+
+ #define TRACEBUFSIZ 1024
+
+diff --git a/src/pi_tests/classic_pi.c b/src/pi_tests/classic_pi.c
+index 64af8890276f..bb088d3973b2 100644
+--- a/src/pi_tests/classic_pi.c
++++ b/src/pi_tests/classic_pi.c
+@@ -34,6 +34,8 @@
+ #include <signal.h>
+ #include <getopt.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+diff --git a/src/pi_tests/tst-mutexpi10.c b/src/pi_tests/tst-mutexpi10.c
+index 97a345edd26e..1028d344edff 100644
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c
+index 5db8d348cdf8..2de6c1417e4a 100644
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "error.h"
++#include "musl.h"
+
+ #include <pthread.h>
+
+diff --git a/src/ptsematest/ptsematest.c b/src/ptsematest/ptsematest.c
+index de8ea2fe1b0c..1568f3b78711 100644
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "error.h"
++#include "musl.h"
+
+ #include <pthread.h>
+
+diff --git a/src/rt-migrate-test/rt-migrate-test.c b/src/rt-migrate-test/rt-migrate-test.c
+index 4863238edeb4..9f1aba159dc7 100644
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -25,6 +25,7 @@
+ #include <sched.h>
+ #include <pthread.h>
+ #include "rt-utils.h"
++#include "musl.h"
+
+ int nr_tasks;
+ int lfd;
+diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
+index a08e28e73c42..675a0ea1a162 100644
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -32,6 +32,8 @@
+ #include <rt-utils.h>
+ #include <rt-sched.h>
+
++#include "musl.h"
++
+ #define _STR(x) #x
+ #define STR(x) _STR(x)
+ #ifndef MAXPATH
+--
+2.26.2
+
diff --git a/dev-util/rt-tests/rt-tests-1.9.ebuild b/dev-util/rt-tests/rt-tests-1.9.ebuild
new file mode 100644
index 00000000000..cb4f2d29351
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-1.9.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake prefix=/usr DESTDIR="${D}" MAN_COMPRESSION=none install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2020-12-27 3:37 Sam James
0 siblings, 0 replies; 9+ messages in thread
From: Sam James @ 2020-12-27 3:37 UTC (permalink / raw
To: gentoo-commits
commit: 444abead67e33cd3c706fefcbc95e8c7370473a5
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Wed Dec 23 09:07:22 2020 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Dec 27 03:32:58 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=444abead
dev-util/rt-tests: Add version v1.10
Package-Manager: Portage-3.0.9, Repoman-3.0.2
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Sam James <sam <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-1.10-musl.patch | 381 +++++++++++++++++++++++
dev-util/rt-tests/rt-tests-1.10.ebuild | 38 +++
3 files changed, 420 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 8ef3346de3c..bad4155f3b7 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
+DIST rt-tests-1.10.tar.xz 112300 BLAKE2B b38a7357b1402de94661014e71ed9fc48d9dde6cabbe72ed4031841b57f7fb76a01dda03c7888f11d8e5e9c11cda8281dae1b437f0d1ff971d2941547f659103 SHA512 9512419b364746ad490894c7184a391f0e8d571477ad636abff8ed473151c6f2c263475ca4aa7d498e81c18e17e42ae82260693b90bce4ef9889e0eaf0b77b58
DIST rt-tests-1.9.tar.xz 112180 BLAKE2B fa9b7b70bd9ae5d5f5e1077ddbd916bc4556d079d4067f16289ab34fec16ed0c8074607a7a8e50ea7bad4df318a063074f1c0ec5c2e895851d3045d51a8ecd74 SHA512 66f086dbda31567e6dc5297424ec66b2c6bd7cb0e065c32e02c326f33967f3a301b1b34f9eb0dd0acd853279c64fb1c2bc271ac26648f4abc3f6090ba6484cfa
diff --git a/dev-util/rt-tests/files/rt-tests-1.10-musl.patch b/dev-util/rt-tests/files/rt-tests-1.10-musl.patch
new file mode 100644
index 00000000000..2dc17d50492
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-1.10-musl.patch
@@ -0,0 +1,381 @@
+From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1 +
+ src/cyclictest/cyclictest.c | 70 ++++-----------------------
+ src/hackbench/hackbench.c | 4 +-
+ src/include/musl.h | 28 +++++++++++
+ src/lib/rt-utils.c | 1 +
+ src/pi_tests/classic_pi.c | 2 +
+ src/pi_tests/tst-mutexpi10.c | 2 +
+ src/pmqtest/pmqtest.c | 1 +
+ src/ptsematest/ptsematest.c | 1 +
+ src/rt-migrate-test/rt-migrate-test.c | 1 +
+ src/sched_deadline/cyclicdeadline.c | 2 +
+ 12 files changed, 51 insertions(+), 67 deletions(-)
+ create mode 100644 src/include/musl.h
+
+diff --git a/Makefile b/Makefile
+index 636f1914a777..01732ee2647f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
+ endif
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o $(OBJDIR)/librttest.a
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+diff --git a/src/backfire/sendme.c b/src/backfire/sendme.c
+index d963723b1c93..b355bbbcfece 100644
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -31,6 +31,7 @@
+ #include <errno.h>
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
++#include "musl.h"
+
+ #include <utmpx.h>
+ #include <sys/types.h>
+diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
+index f38c453f1975..b6b91218f756 100644
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -37,6 +37,7 @@
+
+ #include "rt-utils.h"
+ #include "rt-numa.h"
++#include "musl.h"
+
+ #include <bionic.h>
+
+@@ -500,12 +501,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop;
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -536,14 +533,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -598,20 +587,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -619,16 +594,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -749,11 +718,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -778,17 +742,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1159,7 +1112,8 @@ static void process_options(int argc, char *argv[], int max_cpus)
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1192,13 +1146,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ if (numa_initialize())
+@@ -1881,7 +1828,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -1931,16 +1877,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+- /* get the stack size set for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ /* get the stack size set for for this thread */
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
+index 268c23233004..bbbb29a3a430 100644
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -24,13 +24,15 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <limits.h>
+ #include <getopt.h>
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+diff --git a/src/include/musl.h b/src/include/musl.h
+new file mode 100644
+index 000000000000..ea5075e768c8
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
+index 2d68d62cd875..529d427c8084 100644
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -23,6 +23,7 @@
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "error.h"
++#include "musl.h"
+
+ #define TRACEBUFSIZ 1024
+
+diff --git a/src/pi_tests/classic_pi.c b/src/pi_tests/classic_pi.c
+index 64af8890276f..bb088d3973b2 100644
+--- a/src/pi_tests/classic_pi.c
++++ b/src/pi_tests/classic_pi.c
+@@ -34,6 +34,8 @@
+ #include <signal.h>
+ #include <getopt.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+diff --git a/src/pi_tests/tst-mutexpi10.c b/src/pi_tests/tst-mutexpi10.c
+index 97a345edd26e..1028d344edff 100644
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c
+index 5f7a24d55db6..555679cf36ef 100644
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "error.h"
++#include "musl.h"
+
+ #include <pthread.h>
+
+diff --git a/src/ptsematest/ptsematest.c b/src/ptsematest/ptsematest.c
+index 2e392299fdc4..b45d35755865 100644
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "error.h"
++#include "musl.h"
+
+ #include <pthread.h>
+
+diff --git a/src/rt-migrate-test/rt-migrate-test.c b/src/rt-migrate-test/rt-migrate-test.c
+index 9bf716c9178c..f51d388d9150 100644
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -25,6 +25,7 @@
+ #include <sched.h>
+ #include <pthread.h>
+ #include "rt-utils.h"
++#include "musl.h"
+
+ int nr_tasks;
+ int lfd;
+diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
+index 98eb367248ac..45b27f72a5a7 100644
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -34,6 +34,8 @@
+ #include <rt-sched.h>
+ #include <error.h>
+
++#include "musl.h"
++
+ #define _STR(x) #x
+ #define STR(x) _STR(x)
+ #ifndef MAXPATH
+--
+2.26.2
+
diff --git a/dev-util/rt-tests/rt-tests-1.10.ebuild b/dev-util/rt-tests/rt-tests-1.10.ebuild
new file mode 100644
index 00000000000..7fb6bb3a9f0
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-1.10.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake prefix=/usr DESTDIR="${D}" install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2021-07-14 14:32 Joonas Niilola
0 siblings, 0 replies; 9+ messages in thread
From: Joonas Niilola @ 2021-07-14 14:32 UTC (permalink / raw
To: gentoo-commits
commit: 622b2e8e3fd229118206cec008136d114deb0939
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Sun Jul 4 06:51:37 2021 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Jul 14 14:32:41 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=622b2e8e
dev-util/rt-tests: Bump to v2.1
Package-Manager: Portage-3.0.20, Repoman-3.0.2
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-2.1-musl.patch | 352 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-2.1.ebuild | 38 +++
3 files changed, 391 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index c246fed4f7c..aa57879e254 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1,2 +1,3 @@
DIST rt-tests-1.10.tar.xz 112300 BLAKE2B b38a7357b1402de94661014e71ed9fc48d9dde6cabbe72ed4031841b57f7fb76a01dda03c7888f11d8e5e9c11cda8281dae1b437f0d1ff971d2941547f659103 SHA512 9512419b364746ad490894c7184a391f0e8d571477ad636abff8ed473151c6f2c263475ca4aa7d498e81c18e17e42ae82260693b90bce4ef9889e0eaf0b77b58
DIST rt-tests-2.0.tar.xz 114944 BLAKE2B 809224e6d480b098ed398c0646070f18aa25e8947485709ff309c4a2ee289797924e6df39ac2af68b91b2df064642d56bd8f7aa7332764d95d53e7d9a34d4ca7 SHA512 6c582734eb41f7addaac7d0f3dbb313e3af30eb2b662781f6c62dbaf13da2e84f36a6f918f11608406ca2a08636df93375272444a2cdf205e782ec9f4bc45dca
+DIST rt-tests-2.1.tar.xz 114892 BLAKE2B 25a382c898ffdbbe7b6c3f69f440b87ca6b88cc634aae06a3e02154954b8b50da46e2f2b3291d7473bb0ae533f5a90a7769433650bab3f7c229a5d3022e32b50 SHA512 7abab6c1191247ac44f4e5193752474756d82fdf1d8a3b69c92c8d37bd4fe8458444d2165894fc8483590809ff5b4f1c755d66afb296e72041f9efbedd048d0d
diff --git a/dev-util/rt-tests/files/rt-tests-2.1-musl.patch b/dev-util/rt-tests/files/rt-tests-2.1-musl.patch
new file mode 100644
index 00000000000..caa8d415aad
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.1-musl.patch
@@ -0,0 +1,352 @@
+From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1
+ src/cyclictest/cyclictest.c | 70 ++++------------------------------
+ src/hackbench/hackbench.c | 4 +
+ src/include/musl.h | 28 +++++++++++++
+ src/lib/rt-utils.c | 1
+ src/pi_tests/classic_pi.c | 2
+ src/pi_tests/tst-mutexpi10.c | 2
+ src/pmqtest/pmqtest.c | 1
+ src/ptsematest/ptsematest.c | 1
+ src/rt-migrate-test/rt-migrate-test.c | 1
+ src/sched_deadline/cyclicdeadline.c | 1
+ 12 files changed, 50 insertions(+), 67 deletions(-)
+ create mode 100644 src/include/musl.h
+
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
+ endif
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -29,6 +29,7 @@
+ #include <string.h>
+ #include <time.h>
+ #include <errno.h>
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -33,6 +33,7 @@
+ #include <sys/utsname.h>
+ #include <sys/mman.h>
+ #include <sys/syscall.h>
++#include "musl.h"
+ #include "rt_numa.h"
+
+ #include "rt-utils.h"
+@@ -502,12 +503,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop;
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -538,14 +535,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -600,20 +589,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -621,16 +596,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -751,11 +720,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -780,17 +744,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1174,7 +1127,8 @@ static void process_options(int argc, ch
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1207,13 +1161,6 @@ static void process_options(int argc, ch
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ numa = numa_initialize();
+@@ -1943,7 +1890,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -1993,16 +1939,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+- /* get the stack size set for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ /* get the stack size set for for this thread */
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -24,13 +24,15 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <limits.h>
+ #include <getopt.h>
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -24,6 +24,7 @@
+ #include <time.h>
+ #include <sys/time.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
+--- a/src/pi_tests/classic_pi.c
++++ b/src/pi_tests/classic_pi.c
+@@ -34,6 +34,8 @@
+ #include <signal.h>
+ #include <getopt.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -27,6 +27,7 @@
+
+ #include <linux/unistd.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+
+ int nr_tasks;
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -30,6 +30,7 @@
+ #include <linux/unistd.h>
+ #include <linux/magic.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-2.1.ebuild b/dev-util/rt-tests/rt-tests-2.1.ebuild
new file mode 100644
index 00000000000..8f2df0599b2
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-2.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..10} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake prefix=/usr DESTDIR="${ED}" install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2021-07-14 14:32 Joonas Niilola
0 siblings, 0 replies; 9+ messages in thread
From: Joonas Niilola @ 2021-07-14 14:32 UTC (permalink / raw
To: gentoo-commits
commit: ab611d79e64413cfc6f6b527ad4f7cce1c4a83e1
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Sun Jul 4 06:52:18 2021 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Wed Jul 14 14:32:41 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ab611d79
dev-util/rt-tests: Drop old
Package-Manager: Portage-3.0.20, Repoman-3.0.2
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Closes: https://github.com/gentoo/gentoo/pull/21460
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
dev-util/rt-tests/Manifest | 2 -
dev-util/rt-tests/files/rt-tests-1.10-musl.patch | 381 -----------------------
dev-util/rt-tests/files/rt-tests-2.0-musl.patch | 352 ---------------------
dev-util/rt-tests/rt-tests-1.10.ebuild | 38 ---
dev-util/rt-tests/rt-tests-2.0.ebuild | 38 ---
5 files changed, 811 deletions(-)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index aa57879e254..7b3e4970e1a 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1,3 +1 @@
-DIST rt-tests-1.10.tar.xz 112300 BLAKE2B b38a7357b1402de94661014e71ed9fc48d9dde6cabbe72ed4031841b57f7fb76a01dda03c7888f11d8e5e9c11cda8281dae1b437f0d1ff971d2941547f659103 SHA512 9512419b364746ad490894c7184a391f0e8d571477ad636abff8ed473151c6f2c263475ca4aa7d498e81c18e17e42ae82260693b90bce4ef9889e0eaf0b77b58
-DIST rt-tests-2.0.tar.xz 114944 BLAKE2B 809224e6d480b098ed398c0646070f18aa25e8947485709ff309c4a2ee289797924e6df39ac2af68b91b2df064642d56bd8f7aa7332764d95d53e7d9a34d4ca7 SHA512 6c582734eb41f7addaac7d0f3dbb313e3af30eb2b662781f6c62dbaf13da2e84f36a6f918f11608406ca2a08636df93375272444a2cdf205e782ec9f4bc45dca
DIST rt-tests-2.1.tar.xz 114892 BLAKE2B 25a382c898ffdbbe7b6c3f69f440b87ca6b88cc634aae06a3e02154954b8b50da46e2f2b3291d7473bb0ae533f5a90a7769433650bab3f7c229a5d3022e32b50 SHA512 7abab6c1191247ac44f4e5193752474756d82fdf1d8a3b69c92c8d37bd4fe8458444d2165894fc8483590809ff5b4f1c755d66afb296e72041f9efbedd048d0d
diff --git a/dev-util/rt-tests/files/rt-tests-1.10-musl.patch b/dev-util/rt-tests/files/rt-tests-1.10-musl.patch
deleted file mode 100644
index 2dc17d50492..00000000000
--- a/dev-util/rt-tests/files/rt-tests-1.10-musl.patch
+++ /dev/null
@@ -1,381 +0,0 @@
-From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
-From: Kurt Kanzenbach <kurt@kmk-computers.de>
-Date: Wed, 1 Apr 2020 20:15:24 +0200
-Subject: [PATCH] all: Fix musl build
-
-There are a few problems:
-
- * pi stress: pthread_attr_setaffinity_np() is not supported
- * cyclictest: SIGEV_THREAD_ID is not supported
- * hackbench: Fix include
- * all: Fix sched_* calls
-
-With these changes applied, the rt-tests seem to run fine.
-
-Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
----
- Makefile | 5 --
- src/backfire/sendme.c | 1 +
- src/cyclictest/cyclictest.c | 70 ++++-----------------------
- src/hackbench/hackbench.c | 4 +-
- src/include/musl.h | 28 +++++++++++
- src/lib/rt-utils.c | 1 +
- src/pi_tests/classic_pi.c | 2 +
- src/pi_tests/tst-mutexpi10.c | 2 +
- src/pmqtest/pmqtest.c | 1 +
- src/ptsematest/ptsematest.c | 1 +
- src/rt-migrate-test/rt-migrate-test.c | 1 +
- src/sched_deadline/cyclicdeadline.c | 2 +
- 12 files changed, 51 insertions(+), 67 deletions(-)
- create mode 100644 src/include/musl.h
-
-diff --git a/Makefile b/Makefile
-index 636f1914a777..01732ee2647f 100644
---- a/Makefile
-+++ b/Makefile
-@@ -7,7 +7,6 @@ OBJDIR = bld
- sources = cyclictest.c \
- hackbench.c \
- pip_stress.c \
-- pi_stress.c \
- pmqtest.c \
- ptsematest.c \
- rt-migrate-test.c \
-@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
- endif
-
- MANPAGES = src/cyclictest/cyclictest.8 \
-- src/pi_tests/pi_stress.8 \
- src/ptsematest/ptsematest.8 \
- src/rt-migrate-test/rt-migrate-test.8 \
- src/sigwaittest/sigwaittest.8 \
-@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o $(OBJDIR)/librttest.a
- signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
-
--pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
-- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
--
- hwlatdetect: src/hwlatdetect/hwlatdetect.py
- chmod +x src/hwlatdetect/hwlatdetect.py
- ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
-diff --git a/src/backfire/sendme.c b/src/backfire/sendme.c
-index d963723b1c93..b355bbbcfece 100644
---- a/src/backfire/sendme.c
-+++ b/src/backfire/sendme.c
-@@ -31,6 +31,7 @@
- #include <errno.h>
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
-+#include "musl.h"
-
- #include <utmpx.h>
- #include <sys/types.h>
-diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
-index f38c453f1975..b6b91218f756 100644
---- a/src/cyclictest/cyclictest.c
-+++ b/src/cyclictest/cyclictest.c
-@@ -37,6 +37,7 @@
-
- #include "rt-utils.h"
- #include "rt-numa.h"
-+#include "musl.h"
-
- #include <bionic.h>
-
-@@ -500,12 +501,8 @@ static void *timerthread(void *param)
- {
- struct thread_param *par = param;
- struct sched_param schedp;
-- struct sigevent sigev;
- sigset_t sigset;
-- timer_t timer;
- struct timespec now, next, interval, stop;
-- struct itimerval itimer;
-- struct itimerspec tspec;
- struct thread_stat *stat = par->stats;
- int stopped = 0;
- cpu_set_t mask;
-@@ -536,14 +533,6 @@ static void *timerthread(void *param)
- sigaddset(&sigset, par->signal);
- sigprocmask(SIG_BLOCK, &sigset, NULL);
-
-- if (par->mode == MODE_CYCLIC) {
-- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
-- sigev.sigev_signo = par->signal;
-- sigev.sigev_notify_thread_id = stat->tid;
-- timer_create(par->clock, &sigev, &timer);
-- tspec.it_interval = interval;
-- }
--
- memset(&schedp, 0, sizeof(schedp));
- schedp.sched_priority = par->prio;
- if (setscheduler(0, par->policy, &schedp))
-@@ -598,20 +587,6 @@ static void *timerthread(void *param)
- stop = now;
- stop.tv_sec += duration;
- }
-- if (par->mode == MODE_CYCLIC) {
-- if (par->timermode == TIMER_ABSTIME)
-- tspec.it_value = next;
-- else
-- tspec.it_value = interval;
-- timer_settime(timer, par->timermode, &tspec, NULL);
-- }
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_interval.tv_sec = interval.tv_sec;
-- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
-- itimer.it_value = itimer.it_interval;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
-
- stat->threadstarted++;
-
-@@ -619,16 +594,10 @@ static void *timerthread(void *param)
-
- uint64_t diff;
- unsigned long diff_smi = 0;
-- int sigs, ret;
-+ int ret;
-
- /* Wait for next period */
- switch (par->mode) {
-- case MODE_CYCLIC:
-- case MODE_SYS_ITIMER:
-- if (sigwait(&sigset, &sigs) < 0)
-- goto out;
-- break;
--
- case MODE_CLOCK_NANOSLEEP:
- if (par->timermode == TIMER_ABSTIME) {
- ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
-@@ -749,11 +718,6 @@ static void *timerthread(void *param)
-
- next.tv_sec += interval.tv_sec;
- next.tv_nsec += interval.tv_nsec;
-- if (par->mode == MODE_CYCLIC) {
-- int overrun_count = timer_getoverrun(timer);
-- next.tv_sec += overrun_count * interval.tv_sec;
-- next.tv_nsec += overrun_count * interval.tv_nsec;
-- }
- tsnorm(&next);
-
- while (tsgreater(&now, &next)) {
-@@ -778,17 +742,6 @@ out:
- pthread_mutex_unlock(&refresh_on_max_lock);
- }
-
-- if (par->mode == MODE_CYCLIC)
-- timer_delete(timer);
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_value.tv_sec = 0;
-- itimer.it_value.tv_usec = 0;
-- itimer.it_interval.tv_sec = 0;
-- itimer.it_interval.tv_usec = 0;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
--
- /* close msr file */
- if (smi)
- close(par->msr_fd);
-@@ -1159,7 +1112,8 @@ static void process_options(int argc, char *argv[], int max_cpus)
- case OPT_VERBOSE: verbose = 1; break;
- case 'x':
- case OPT_POSIX_TIMERS:
-- use_nanosleep = MODE_CYCLIC; break;
-+ fatal("--posix_timers is not available on your libc\n");
-+ break;
- case '?':
- case OPT_HELP:
- display_help(0); break;
-@@ -1192,13 +1146,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
- }
- }
-
-- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
-- warn("The system option requires clock_nanosleep\n");
-- warn("and is not compatible with posix_timers\n");
-- warn("Using clock_nanosleep\n");
-- use_nanosleep = MODE_CLOCK_NANOSLEEP;
-- }
--
- /* if smp wasn't requested, test for numa automatically */
- if (!smp) {
- if (numa_initialize())
-@@ -1881,7 +1828,6 @@ int main(int argc, char **argv)
-
- }
-
--
- mode = use_nanosleep + use_system;
-
- sigemptyset(&sigset);
-@@ -1931,16 +1877,18 @@ int main(int argc, char **argv)
- void *stack;
- void *currstk;
- size_t stksize;
-+ int err;
-
- /* find the memory node associated with the cpu i */
- node = rt_numa_numa_node_of_cpu(cpu);
-
-- /* get the stack size set for this thread */
-- if (pthread_attr_getstack(&attr, &currstk, &stksize))
-+ /* get the stack size set for for this thread */
-+ err = pthread_attr_getstack(&attr, &currstk, &stksize);
-+ if (err != EINVAL)
- fatal("failed to get stack size for thread %d\n", i);
-
- /* if the stack size is zero, set a default */
-- if (stksize == 0)
-+ if (err == EINVAL || stksize == 0)
- stksize = PTHREAD_STACK_MIN * 2;
-
- /* allocate memory for a stack on appropriate node */
-diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
-index 268c23233004..bbbb29a3a430 100644
---- a/src/hackbench/hackbench.c
-+++ b/src/hackbench/hackbench.c
-@@ -24,13 +24,15 @@
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <sys/time.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <limits.h>
- #include <getopt.h>
- #include <signal.h>
- #include <setjmp.h>
- #include <sched.h>
-
-+#include "musl.h"
-+
- static unsigned int datasize = 100;
- static unsigned int loops = 100;
- static unsigned int num_groups = 10;
-diff --git a/src/include/musl.h b/src/include/musl.h
-new file mode 100644
-index 000000000000..ea5075e768c8
---- /dev/null
-+++ b/src/include/musl.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
-+ * Time-stamp: <2020-04-04 10:54:01 kurt>
-+ */
-+
-+#ifndef _MUSL_H_
-+#define _MUSL_H_
-+
-+#include <unistd.h>
-+#include <sys/syscall.h>
-+
-+/*
-+ * Musl someshow defines sched_* to ENOSYS which is not correct ...
-+ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
-+ *
-+ * Workaround: define them to syscall(...)
-+ */
-+
-+#define sched_getparam(pid, param) \
-+ syscall(SYS_sched_getparam, pid, param)
-+#define sched_setparam(pid, param) \
-+ syscall(SYS_sched_setparam, pid, param)
-+#define sched_getscheduler(pid) \
-+ syscall(SYS_sched_getscheduler, pid)
-+#define sched_setscheduler(pid, policy, param) \
-+ syscall(SYS_sched_setscheduler, pid, policy, param)
-+
-+#endif /* _MUSL_H_ */
-diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
-index 2d68d62cd875..529d427c8084 100644
---- a/src/lib/rt-utils.c
-+++ b/src/lib/rt-utils.c
-@@ -23,6 +23,7 @@
- #include "rt-utils.h"
- #include "rt-sched.h"
- #include "error.h"
-+#include "musl.h"
-
- #define TRACEBUFSIZ 1024
-
-diff --git a/src/pi_tests/classic_pi.c b/src/pi_tests/classic_pi.c
-index 64af8890276f..bb088d3973b2 100644
---- a/src/pi_tests/classic_pi.c
-+++ b/src/pi_tests/classic_pi.c
-@@ -34,6 +34,8 @@
- #include <signal.h>
- #include <getopt.h>
-
-+#include "musl.h"
-+
- /* test timeout */
- #define TIMEOUT 2
-
-diff --git a/src/pi_tests/tst-mutexpi10.c b/src/pi_tests/tst-mutexpi10.c
-index 97a345edd26e..1028d344edff 100644
---- a/src/pi_tests/tst-mutexpi10.c
-+++ b/src/pi_tests/tst-mutexpi10.c
-@@ -35,6 +35,8 @@
- #include <string.h>
- #include <signal.h>
-
-+#include "musl.h"
-+
- /* test timeout */
- #define TIMEOUT 2
-
-diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c
-index 5f7a24d55db6..555679cf36ef 100644
---- a/src/pmqtest/pmqtest.c
-+++ b/src/pmqtest/pmqtest.c
-@@ -24,6 +24,7 @@
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "error.h"
-+#include "musl.h"
-
- #include <pthread.h>
-
-diff --git a/src/ptsematest/ptsematest.c b/src/ptsematest/ptsematest.c
-index 2e392299fdc4..b45d35755865 100644
---- a/src/ptsematest/ptsematest.c
-+++ b/src/ptsematest/ptsematest.c
-@@ -22,6 +22,7 @@
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "error.h"
-+#include "musl.h"
-
- #include <pthread.h>
-
-diff --git a/src/rt-migrate-test/rt-migrate-test.c b/src/rt-migrate-test/rt-migrate-test.c
-index 9bf716c9178c..f51d388d9150 100644
---- a/src/rt-migrate-test/rt-migrate-test.c
-+++ b/src/rt-migrate-test/rt-migrate-test.c
-@@ -25,6 +25,7 @@
- #include <sched.h>
- #include <pthread.h>
- #include "rt-utils.h"
-+#include "musl.h"
-
- int nr_tasks;
- int lfd;
-diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
-index 98eb367248ac..45b27f72a5a7 100644
---- a/src/sched_deadline/cyclicdeadline.c
-+++ b/src/sched_deadline/cyclicdeadline.c
-@@ -34,6 +34,8 @@
- #include <rt-sched.h>
- #include <error.h>
-
-+#include "musl.h"
-+
- #define _STR(x) #x
- #define STR(x) _STR(x)
- #ifndef MAXPATH
---
-2.26.2
-
diff --git a/dev-util/rt-tests/files/rt-tests-2.0-musl.patch b/dev-util/rt-tests/files/rt-tests-2.0-musl.patch
deleted file mode 100644
index 4c97c640a5c..00000000000
--- a/dev-util/rt-tests/files/rt-tests-2.0-musl.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
-From: Kurt Kanzenbach <kurt@kmk-computers.de>
-Date: Wed, 1 Apr 2020 20:15:24 +0200
-Subject: [PATCH] all: Fix musl build
-
-There are a few problems:
-
- * pi stress: pthread_attr_setaffinity_np() is not supported
- * cyclictest: SIGEV_THREAD_ID is not supported
- * hackbench: Fix include
- * all: Fix sched_* calls
-
-With these changes applied, the rt-tests seem to run fine.
-
-Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
----
- Makefile | 5 --
- src/backfire/sendme.c | 1
- src/cyclictest/cyclictest.c | 70 ++++------------------------------
- src/hackbench/hackbench.c | 4 +
- src/include/musl.h | 28 +++++++++++++
- src/lib/rt-utils.c | 1
- src/pi_tests/classic_pi.c | 2
- src/pi_tests/tst-mutexpi10.c | 2
- src/pmqtest/pmqtest.c | 1
- src/ptsematest/ptsematest.c | 1
- src/rt-migrate-test/rt-migrate-test.c | 1
- src/sched_deadline/cyclicdeadline.c | 1
- 12 files changed, 50 insertions(+), 67 deletions(-)
- create mode 100644 src/include/musl.h
-
---- a/Makefile
-+++ b/Makefile
-@@ -7,7 +7,6 @@ OBJDIR = bld
- sources = cyclictest.c \
- hackbench.c \
- pip_stress.c \
-- pi_stress.c \
- pmqtest.c \
- ptsematest.c \
- rt-migrate-test.c \
-@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
- endif
-
- MANPAGES = src/cyclictest/cyclictest.8 \
-- src/pi_tests/pi_stress.8 \
- src/ptsematest/ptsematest.8 \
- src/rt-migrate-test/rt-migrate-test.8 \
- src/sigwaittest/sigwaittest.8 \
-@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
- signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
-
--pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
-- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
--
- hwlatdetect: src/hwlatdetect/hwlatdetect.py
- chmod +x src/hwlatdetect/hwlatdetect.py
- ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
---- a/src/backfire/sendme.c
-+++ b/src/backfire/sendme.c
-@@ -29,6 +29,7 @@
- #include <string.h>
- #include <time.h>
- #include <errno.h>
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
-
---- a/src/cyclictest/cyclictest.c
-+++ b/src/cyclictest/cyclictest.c
-@@ -33,6 +33,7 @@
- #include <sys/utsname.h>
- #include <sys/mman.h>
- #include <sys/syscall.h>
-+#include "musl.h"
- #include "rt_numa.h"
-
- #include "rt-utils.h"
-@@ -502,12 +503,8 @@ static void *timerthread(void *param)
- {
- struct thread_param *par = param;
- struct sched_param schedp;
-- struct sigevent sigev;
- sigset_t sigset;
-- timer_t timer;
- struct timespec now, next, interval, stop;
-- struct itimerval itimer;
-- struct itimerspec tspec;
- struct thread_stat *stat = par->stats;
- int stopped = 0;
- cpu_set_t mask;
-@@ -538,14 +535,6 @@ static void *timerthread(void *param)
- sigaddset(&sigset, par->signal);
- sigprocmask(SIG_BLOCK, &sigset, NULL);
-
-- if (par->mode == MODE_CYCLIC) {
-- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
-- sigev.sigev_signo = par->signal;
-- sigev.sigev_notify_thread_id = stat->tid;
-- timer_create(par->clock, &sigev, &timer);
-- tspec.it_interval = interval;
-- }
--
- memset(&schedp, 0, sizeof(schedp));
- schedp.sched_priority = par->prio;
- if (setscheduler(0, par->policy, &schedp))
-@@ -600,20 +589,6 @@ static void *timerthread(void *param)
- stop = now;
- stop.tv_sec += duration;
- }
-- if (par->mode == MODE_CYCLIC) {
-- if (par->timermode == TIMER_ABSTIME)
-- tspec.it_value = next;
-- else
-- tspec.it_value = interval;
-- timer_settime(timer, par->timermode, &tspec, NULL);
-- }
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_interval.tv_sec = interval.tv_sec;
-- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
-- itimer.it_value = itimer.it_interval;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
-
- rt_test_start();
- stat->threadstarted++;
-@@ -622,16 +597,10 @@ static void *timerthread(void *param)
-
- uint64_t diff;
- unsigned long diff_smi = 0;
-- int sigs, ret;
-+ int ret;
-
- /* Wait for next period */
- switch (par->mode) {
-- case MODE_CYCLIC:
-- case MODE_SYS_ITIMER:
-- if (sigwait(&sigset, &sigs) < 0)
-- goto out;
-- break;
--
- case MODE_CLOCK_NANOSLEEP:
- if (par->timermode == TIMER_ABSTIME) {
- ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
-@@ -752,11 +721,6 @@ static void *timerthread(void *param)
-
- next.tv_sec += interval.tv_sec;
- next.tv_nsec += interval.tv_nsec;
-- if (par->mode == MODE_CYCLIC) {
-- int overrun_count = timer_getoverrun(timer);
-- next.tv_sec += overrun_count * interval.tv_sec;
-- next.tv_nsec += overrun_count * interval.tv_nsec;
-- }
- tsnorm(&next);
-
- while (tsgreater(&now, &next)) {
-@@ -781,17 +745,6 @@ out:
- pthread_mutex_unlock(&refresh_on_max_lock);
- }
-
-- if (par->mode == MODE_CYCLIC)
-- timer_delete(timer);
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_value.tv_sec = 0;
-- itimer.it_value.tv_usec = 0;
-- itimer.it_interval.tv_sec = 0;
-- itimer.it_interval.tv_usec = 0;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
--
- /* close msr file */
- if (smi)
- close(par->msr_fd);
-@@ -1175,7 +1128,8 @@ static void process_options(int argc, ch
- case OPT_VERBOSE: verbose = 1; break;
- case 'x':
- case OPT_POSIX_TIMERS:
-- use_nanosleep = MODE_CYCLIC; break;
-+ fatal("--posix_timers is not available on your libc\n");
-+ break;
- case '?':
- case OPT_HELP:
- display_help(0); break;
-@@ -1208,13 +1162,6 @@ static void process_options(int argc, ch
- }
- }
-
-- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
-- warn("The system option requires clock_nanosleep\n");
-- warn("and is not compatible with posix_timers\n");
-- warn("Using clock_nanosleep\n");
-- use_nanosleep = MODE_CLOCK_NANOSLEEP;
-- }
--
- /* if smp wasn't requested, test for numa automatically */
- if (!smp) {
- numa = numa_initialize();
-@@ -1944,7 +1891,6 @@ int main(int argc, char **argv)
-
- }
-
--
- mode = use_nanosleep + use_system;
-
- sigemptyset(&sigset);
-@@ -1994,16 +1940,18 @@ int main(int argc, char **argv)
- void *stack;
- void *currstk;
- size_t stksize;
-+ int err;
-
- /* find the memory node associated with the cpu i */
- node = rt_numa_numa_node_of_cpu(cpu);
-
-- /* get the stack size set for this thread */
-- if (pthread_attr_getstack(&attr, &currstk, &stksize))
-+ /* get the stack size set for for this thread */
-+ err = pthread_attr_getstack(&attr, &currstk, &stksize);
-+ if (err != EINVAL)
- fatal("failed to get stack size for thread %d\n", i);
-
- /* if the stack size is zero, set a default */
-- if (stksize == 0)
-+ if (err == EINVAL || stksize == 0)
- stksize = PTHREAD_STACK_MIN * 2;
-
- /* allocate memory for a stack on appropriate node */
---- a/src/hackbench/hackbench.c
-+++ b/src/hackbench/hackbench.c
-@@ -24,13 +24,15 @@
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <sys/time.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <limits.h>
- #include <getopt.h>
- #include <signal.h>
- #include <setjmp.h>
- #include <sched.h>
-
-+#include "musl.h"
-+
- static unsigned int datasize = 100;
- static unsigned int loops = 100;
- static unsigned int num_groups = 10;
---- /dev/null
-+++ b/src/include/musl.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
-+ * Time-stamp: <2020-04-04 10:54:01 kurt>
-+ */
-+
-+#ifndef _MUSL_H_
-+#define _MUSL_H_
-+
-+#include <unistd.h>
-+#include <sys/syscall.h>
-+
-+/*
-+ * Musl someshow defines sched_* to ENOSYS which is not correct ...
-+ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
-+ *
-+ * Workaround: define them to syscall(...)
-+ */
-+
-+#define sched_getparam(pid, param) \
-+ syscall(SYS_sched_getparam, pid, param)
-+#define sched_setparam(pid, param) \
-+ syscall(SYS_sched_setparam, pid, param)
-+#define sched_getscheduler(pid) \
-+ syscall(SYS_sched_getscheduler, pid)
-+#define sched_setscheduler(pid, policy, param) \
-+ syscall(SYS_sched_setscheduler, pid, policy, param)
-+
-+#endif /* _MUSL_H_ */
---- a/src/lib/rt-utils.c
-+++ b/src/lib/rt-utils.c
-@@ -24,6 +24,7 @@
- #include <time.h>
- #include <sys/time.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-sched.h"
- #include "rt-error.h"
---- a/src/pi_tests/classic_pi.c
-+++ b/src/pi_tests/classic_pi.c
-@@ -34,6 +34,8 @@
- #include <signal.h>
- #include <getopt.h>
-
-+#include "musl.h"
-+
- /* test timeout */
- #define TIMEOUT 2
-
---- a/src/pi_tests/tst-mutexpi10.c
-+++ b/src/pi_tests/tst-mutexpi10.c
-@@ -35,6 +35,8 @@
- #include <string.h>
- #include <signal.h>
-
-+#include "musl.h"
-+
- /* test timeout */
- #define TIMEOUT 2
-
---- a/src/pmqtest/pmqtest.c
-+++ b/src/pmqtest/pmqtest.c
-@@ -24,6 +24,7 @@
- #include <pthread.h>
- #include <inttypes.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "rt-error.h"
---- a/src/ptsematest/ptsematest.c
-+++ b/src/ptsematest/ptsematest.c
-@@ -22,6 +22,7 @@
- #include <pthread.h>
- #include <inttypes.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "rt-error.h"
---- a/src/rt-migrate-test/rt-migrate-test.c
-+++ b/src/rt-migrate-test/rt-migrate-test.c
-@@ -27,6 +27,7 @@
-
- #include <linux/unistd.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
-
- int nr_tasks;
---- a/src/sched_deadline/cyclicdeadline.c
-+++ b/src/sched_deadline/cyclicdeadline.c
-@@ -30,6 +30,7 @@
- #include <linux/unistd.h>
- #include <linux/magic.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-sched.h"
- #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-1.10.ebuild b/dev-util/rt-tests/rt-tests-1.10.ebuild
deleted file mode 100644
index 22e1c39323e..00000000000
--- a/dev-util/rt-tests/rt-tests-1.10.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7..9} )
-
-inherit python-single-r1 toolchain-funcs
-
-DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
-HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
-SRC_URI="
- https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
- https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
-
-LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-DEPEND="${PYTHON_DEPS}
- sys-process/numactl"
-RDEPEND="${DEPEND}"
-
-src_prepare() {
- default
- use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
-}
-
-src_compile() {
- emake CC="$(tc-getCC)" AR="$(tc-getAR)"
-}
-
-src_install() {
- emake prefix=/usr DESTDIR="${ED}" install
- python_fix_shebang "${ED}"
- python_optimize
-}
diff --git a/dev-util/rt-tests/rt-tests-2.0.ebuild b/dev-util/rt-tests/rt-tests-2.0.ebuild
deleted file mode 100644
index 8f2df0599b2..00000000000
--- a/dev-util/rt-tests/rt-tests-2.0.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7..10} )
-
-inherit python-single-r1 toolchain-funcs
-
-DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
-HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
-SRC_URI="
- https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
- https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
-
-LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-DEPEND="${PYTHON_DEPS}
- sys-process/numactl"
-RDEPEND="${DEPEND}"
-
-src_prepare() {
- default
- use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
-}
-
-src_compile() {
- emake CC="$(tc-getCC)" AR="$(tc-getAR)"
-}
-
-src_install() {
- emake prefix=/usr DESTDIR="${ED}" install
- python_fix_shebang "${ED}"
- python_optimize
-}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2021-09-04 6:26 Joonas Niilola
0 siblings, 0 replies; 9+ messages in thread
From: Joonas Niilola @ 2021-09-04 6:26 UTC (permalink / raw
To: gentoo-commits
commit: 54b8effd554c06f82b22ea4d8467f69e7c3925e5
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Thu Sep 2 19:36:44 2021 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sat Sep 4 05:46:44 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=54b8effd
dev-util/rt-tests: Bump to v2.2
Package-Manager: Portage-3.0.20, Repoman-3.0.3
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-2.2-musl.patch | 352 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-2.2.ebuild | 38 +++
3 files changed, 391 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 7b3e4970e1a..b46d2349770 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
DIST rt-tests-2.1.tar.xz 114892 BLAKE2B 25a382c898ffdbbe7b6c3f69f440b87ca6b88cc634aae06a3e02154954b8b50da46e2f2b3291d7473bb0ae533f5a90a7769433650bab3f7c229a5d3022e32b50 SHA512 7abab6c1191247ac44f4e5193752474756d82fdf1d8a3b69c92c8d37bd4fe8458444d2165894fc8483590809ff5b4f1c755d66afb296e72041f9efbedd048d0d
+DIST rt-tests-2.2.tar.xz 115120 BLAKE2B 46db78d32b2d5830859757c21e42d4e21cb0da8b2ebcbf8ba738c8e3832a6ea597d686ee6c9cad23f269853ad188219f46a0e5326124f056b4822619076268ac SHA512 826dc8894dd8670e705566b5224f54bdee89e5b48f21ca00e6c4061f28c4fbe2dab14c1e1b1302fec7011dbf28f3eb88c1b8adc137fed7d17958ea972e3c08b1
diff --git a/dev-util/rt-tests/files/rt-tests-2.2-musl.patch b/dev-util/rt-tests/files/rt-tests-2.2-musl.patch
new file mode 100644
index 00000000000..caa8d415aad
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.2-musl.patch
@@ -0,0 +1,352 @@
+From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1
+ src/cyclictest/cyclictest.c | 70 ++++------------------------------
+ src/hackbench/hackbench.c | 4 +
+ src/include/musl.h | 28 +++++++++++++
+ src/lib/rt-utils.c | 1
+ src/pi_tests/classic_pi.c | 2
+ src/pi_tests/tst-mutexpi10.c | 2
+ src/pmqtest/pmqtest.c | 1
+ src/ptsematest/ptsematest.c | 1
+ src/rt-migrate-test/rt-migrate-test.c | 1
+ src/sched_deadline/cyclicdeadline.c | 1
+ 12 files changed, 50 insertions(+), 67 deletions(-)
+ create mode 100644 src/include/musl.h
+
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
+ endif
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -29,6 +29,7 @@
+ #include <string.h>
+ #include <time.h>
+ #include <errno.h>
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -33,6 +33,7 @@
+ #include <sys/utsname.h>
+ #include <sys/mman.h>
+ #include <sys/syscall.h>
++#include "musl.h"
+ #include "rt_numa.h"
+
+ #include "rt-utils.h"
+@@ -502,12 +503,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop;
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -538,14 +535,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -600,20 +589,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -621,16 +596,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -751,11 +720,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -780,17 +744,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1174,7 +1127,8 @@ static void process_options(int argc, ch
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1207,13 +1161,6 @@ static void process_options(int argc, ch
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ numa = numa_initialize();
+@@ -1943,7 +1890,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -1993,16 +1939,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+- /* get the stack size set for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ /* get the stack size set for for this thread */
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -24,13 +24,15 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <limits.h>
+ #include <getopt.h>
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -24,6 +24,7 @@
+ #include <time.h>
+ #include <sys/time.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
+--- a/src/pi_tests/classic_pi.c
++++ b/src/pi_tests/classic_pi.c
+@@ -34,6 +34,8 @@
+ #include <signal.h>
+ #include <getopt.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -27,6 +27,7 @@
+
+ #include <linux/unistd.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+
+ int nr_tasks;
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -30,6 +30,7 @@
+ #include <linux/unistd.h>
+ #include <linux/magic.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-2.2.ebuild b/dev-util/rt-tests/rt-tests-2.2.ebuild
new file mode 100644
index 00000000000..93d7da4245b
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-2.2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{7..10} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake prefix=/usr DESTDIR="${ED}" install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2022-01-05 19:19 Florian Schmaus
0 siblings, 0 replies; 9+ messages in thread
From: Florian Schmaus @ 2022-01-05 19:19 UTC (permalink / raw
To: gentoo-commits
commit: e5369437f34660b123a3f3ce79b0fea33bb48074
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Mon Dec 27 19:51:24 2021 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Jan 5 19:18:05 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e5369437
dev-util/rt-tests: Bump to v2.3
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-2.3-musl.patch | 352 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-2.3.ebuild | 38 +++
3 files changed, 391 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 0617ddb9a281..b157404b489c 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
DIST rt-tests-2.2.tar.xz 115120 BLAKE2B 46db78d32b2d5830859757c21e42d4e21cb0da8b2ebcbf8ba738c8e3832a6ea597d686ee6c9cad23f269853ad188219f46a0e5326124f056b4822619076268ac SHA512 826dc8894dd8670e705566b5224f54bdee89e5b48f21ca00e6c4061f28c4fbe2dab14c1e1b1302fec7011dbf28f3eb88c1b8adc137fed7d17958ea972e3c08b1
+DIST rt-tests-2.3.tar.xz 115000 BLAKE2B d5f6a31a31340873348b5ffa6c706deb080e9686944a759fa4e4d53f2041d3f27aa1e9512d7413438bce7c61e05e2495c96eeef0b976ee09377f89d847225aef SHA512 3bf6fe95c5ac9911fb51fba1d4a8e6ad3b96a6cdce464372917673862801353cbbb377c76d3a19325f0b5402f65daf5c605e496d7460949615069366a00a978a
diff --git a/dev-util/rt-tests/files/rt-tests-2.3-musl.patch b/dev-util/rt-tests/files/rt-tests-2.3-musl.patch
new file mode 100644
index 000000000000..6732521a07a6
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.3-musl.patch
@@ -0,0 +1,352 @@
+From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1
+ src/cyclictest/cyclictest.c | 70 ++++------------------------------
+ src/hackbench/hackbench.c | 4 +
+ src/include/musl.h | 28 +++++++++++++
+ src/lib/rt-utils.c | 1
+ src/pi_tests/classic_pi.c | 2
+ src/pi_tests/tst-mutexpi10.c | 2
+ src/pmqtest/pmqtest.c | 1
+ src/ptsematest/ptsematest.c | 1
+ src/rt-migrate-test/rt-migrate-test.c | 1
+ src/sched_deadline/cyclicdeadline.c | 1
+ 12 files changed, 50 insertions(+), 67 deletions(-)
+ create mode 100644 src/include/musl.h
+
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
+ endif
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -29,6 +29,7 @@
+ #include <string.h>
+ #include <time.h>
+ #include <errno.h>
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -33,6 +33,7 @@
+ #include <sys/utsname.h>
+ #include <sys/mman.h>
+ #include <sys/syscall.h>
++#include "musl.h"
+ #include "rt_numa.h"
+
+ #include "rt-utils.h"
+@@ -504,12 +505,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop = { 0 };
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -538,14 +535,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -599,20 +588,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -620,16 +595,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -750,11 +719,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -779,17 +743,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1183,7 +1136,8 @@ static void process_options(int argc, ch
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1216,13 +1170,6 @@ static void process_options(int argc, ch
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ numa = numa_initialize();
+@@ -1952,7 +1899,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -2002,16 +1948,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+- /* get the stack size set for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ /* get the stack size set for for this thread */
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -24,13 +24,15 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <limits.h>
+ #include <getopt.h>
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -24,6 +24,7 @@
+ #include <time.h>
+ #include <sys/time.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
+--- a/src/pi_tests/classic_pi.c
++++ b/src/pi_tests/classic_pi.c
+@@ -34,6 +34,8 @@
+ #include <signal.h>
+ #include <getopt.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -27,6 +27,7 @@
+
+ #include <linux/unistd.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+
+ int nr_tasks;
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -30,6 +30,7 @@
+ #include <linux/unistd.h>
+ #include <linux/magic.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-2.3.ebuild b/dev-util/rt-tests/rt-tests-2.3.ebuild
new file mode 100644
index 000000000000..247753110450
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-2.3.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{7..10} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/about/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake CC="$(tc-getCC)" prefix=/usr DESTDIR="${ED}" install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2022-07-15 8:38 Joonas Niilola
0 siblings, 0 replies; 9+ messages in thread
From: Joonas Niilola @ 2022-07-15 8:38 UTC (permalink / raw
To: gentoo-commits
commit: 4f46faf391a0b8947a4ead097d5e0f397cece1de
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Sat Jul 9 10:58:35 2022 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 08:38:11 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4f46faf3
dev-util/rt-tests: add 2.4
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 +
dev-util/rt-tests/files/rt-tests-2.4-musl.patch | 341 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-2.4.ebuild | 38 +++
3 files changed, 380 insertions(+)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 6f230e4f00d8..26e82f44e3de 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
DIST rt-tests-2.3.tar.xz 115000 BLAKE2B d5f6a31a31340873348b5ffa6c706deb080e9686944a759fa4e4d53f2041d3f27aa1e9512d7413438bce7c61e05e2495c96eeef0b976ee09377f89d847225aef SHA512 3bf6fe95c5ac9911fb51fba1d4a8e6ad3b96a6cdce464372917673862801353cbbb377c76d3a19325f0b5402f65daf5c605e496d7460949615069366a00a978a
+DIST rt-tests-2.4.tar.xz 104172 BLAKE2B bd7ac3ff64171b122341eec81ac61dcda429d33d6a69362d498d5db667b8cb77502d745bc2f7ce03cc1e958d02889a902f65544c7fef994fb4d7e72230c73e10 SHA512 308207ad620ee458e4ac000a9437266a84f4807d9cecd8030d5ae12a210c2a01f80a331bb60faeb41244d7ab80b3cadf8164711547a02f5afa353d1a3644d794
diff --git a/dev-util/rt-tests/files/rt-tests-2.4-musl.patch b/dev-util/rt-tests/files/rt-tests-2.4-musl.patch
new file mode 100644
index 000000000000..886359894cdf
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.4-musl.patch
@@ -0,0 +1,341 @@
+From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
+From: Kurt Kanzenbach <kurt@kmk-computers.de>
+Date: Wed, 1 Apr 2020 20:15:24 +0200
+Subject: [PATCH] all: Fix musl build
+
+There are a few problems:
+
+ * pi stress: pthread_attr_setaffinity_np() is not supported
+ * cyclictest: SIGEV_THREAD_ID is not supported
+ * hackbench: Fix include
+ * all: Fix sched_* calls
+
+With these changes applied, the rt-tests seem to run fine.
+
+Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
+---
+ Makefile | 5 --
+ src/backfire/sendme.c | 1
+ src/cyclictest/cyclictest.c | 70 ++++------------------------------
+ src/hackbench/hackbench.c | 4 +
+ src/include/musl.h | 28 +++++++++++++
+ src/lib/rt-utils.c | 1
+ src/pi_tests/tst-mutexpi10.c | 2
+ src/pmqtest/pmqtest.c | 1
+ src/ptsematest/ptsematest.c | 1
+ src/rt-migrate-test/rt-migrate-test.c | 1
+ src/sched_deadline/cyclicdeadline.c | 1
+ 11 files changed, 48 insertions(+), 67 deletions(-)
+ create mode 100644 src/include/musl.h
+
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ hackbench.c \
+ pip_stress.c \
+- pi_stress.c \
+ pmqtest.c \
+ ptsematest.c \
+ rt-migrate-test.c \
+@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
+ endif
+
+ MANPAGES = src/cyclictest/cyclictest.8 \
+- src/pi_tests/pi_stress.8 \
+ src/ptsematest/ptsematest.8 \
+ src/rt-migrate-test/rt-migrate-test.8 \
+ src/sigwaittest/sigwaittest.8 \
+@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
+ signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
+
+-pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
+-
+ hwlatdetect: src/hwlatdetect/hwlatdetect.py
+ chmod +x src/hwlatdetect/hwlatdetect.py
+ ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
+--- a/src/backfire/sendme.c
++++ b/src/backfire/sendme.c
+@@ -29,6 +29,7 @@
+ #include <string.h>
+ #include <time.h>
+ #include <errno.h>
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+
+--- a/src/cyclictest/cyclictest.c
++++ b/src/cyclictest/cyclictest.c
+@@ -33,6 +33,7 @@
+ #include <sys/utsname.h>
+ #include <sys/mman.h>
+ #include <sys/syscall.h>
++#include "musl.h"
+ #include "rt_numa.h"
+
+ #include "rt-utils.h"
+@@ -546,12 +547,8 @@ static void *timerthread(void *param)
+ {
+ struct thread_param *par = param;
+ struct sched_param schedp;
+- struct sigevent sigev;
+ sigset_t sigset;
+- timer_t timer;
+ struct timespec now, next, interval, stop = { 0 };
+- struct itimerval itimer;
+- struct itimerspec tspec;
+ struct thread_stat *stat = par->stats;
+ int stopped = 0;
+ cpu_set_t mask;
+@@ -580,14 +577,6 @@ static void *timerthread(void *param)
+ sigaddset(&sigset, par->signal);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+
+- if (par->mode == MODE_CYCLIC) {
+- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
+- sigev.sigev_signo = par->signal;
+- sigev.sigev_notify_thread_id = stat->tid;
+- timer_create(par->clock, &sigev, &timer);
+- tspec.it_interval = interval;
+- }
+-
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = par->prio;
+ if (setscheduler(0, par->policy, &schedp))
+@@ -641,20 +630,6 @@ static void *timerthread(void *param)
+ stop = now;
+ stop.tv_sec += duration;
+ }
+- if (par->mode == MODE_CYCLIC) {
+- if (par->timermode == TIMER_ABSTIME)
+- tspec.it_value = next;
+- else
+- tspec.it_value = interval;
+- timer_settime(timer, par->timermode, &tspec, NULL);
+- }
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_interval.tv_sec = interval.tv_sec;
+- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+- itimer.it_value = itimer.it_interval;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+
+ stat->threadstarted++;
+
+@@ -662,16 +637,10 @@ static void *timerthread(void *param)
+
+ uint64_t diff;
+ unsigned long diff_smi = 0;
+- int sigs, ret;
++ int ret;
+
+ /* Wait for next period */
+ switch (par->mode) {
+- case MODE_CYCLIC:
+- case MODE_SYS_ITIMER:
+- if (sigwait(&sigset, &sigs) < 0)
+- goto out;
+- break;
+-
+ case MODE_CLOCK_NANOSLEEP:
+ if (par->timermode == TIMER_ABSTIME) {
+ ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
+@@ -792,11 +761,6 @@ static void *timerthread(void *param)
+
+ next.tv_sec += interval.tv_sec;
+ next.tv_nsec += interval.tv_nsec;
+- if (par->mode == MODE_CYCLIC) {
+- int overrun_count = timer_getoverrun(timer);
+- next.tv_sec += overrun_count * interval.tv_sec;
+- next.tv_nsec += overrun_count * interval.tv_nsec;
+- }
+ tsnorm(&next);
+
+ while (tsgreater(&now, &next)) {
+@@ -821,17 +785,6 @@ out:
+ pthread_mutex_unlock(&refresh_on_max_lock);
+ }
+
+- if (par->mode == MODE_CYCLIC)
+- timer_delete(timer);
+-
+- if (par->mode == MODE_SYS_ITIMER) {
+- itimer.it_value.tv_sec = 0;
+- itimer.it_value.tv_usec = 0;
+- itimer.it_interval.tv_sec = 0;
+- itimer.it_interval.tv_usec = 0;
+- setitimer(ITIMER_REAL, &itimer, NULL);
+- }
+-
+ /* close msr file */
+ if (smi)
+ close(par->msr_fd);
+@@ -1227,7 +1180,8 @@ static void process_options(int argc, ch
+ case OPT_VERBOSE: verbose = 1; break;
+ case 'x':
+ case OPT_POSIX_TIMERS:
+- use_nanosleep = MODE_CYCLIC; break;
++ fatal("--posix_timers is not available on your libc\n");
++ break;
+ case '?':
+ case OPT_HELP:
+ display_help(0); break;
+@@ -1260,13 +1214,6 @@ static void process_options(int argc, ch
+ }
+ }
+
+- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
+- warn("The system option requires clock_nanosleep\n");
+- warn("and is not compatible with posix_timers\n");
+- warn("Using clock_nanosleep\n");
+- use_nanosleep = MODE_CLOCK_NANOSLEEP;
+- }
+-
+ /* if smp wasn't requested, test for numa automatically */
+ if (!smp) {
+ numa = numa_initialize();
+@@ -1993,7 +1940,6 @@ int main(int argc, char **argv)
+
+ }
+
+-
+ mode = use_nanosleep + use_system;
+
+ sigemptyset(&sigset);
+@@ -2043,16 +1989,18 @@ int main(int argc, char **argv)
+ void *stack;
+ void *currstk;
+ size_t stksize;
++ int err;
+
+ /* find the memory node associated with the cpu i */
+ node = rt_numa_numa_node_of_cpu(cpu);
+
+- /* get the stack size set for this thread */
+- if (pthread_attr_getstack(&attr, &currstk, &stksize))
++ /* get the stack size set for for this thread */
++ err = pthread_attr_getstack(&attr, &currstk, &stksize);
++ if (err != EINVAL)
+ fatal("failed to get stack size for thread %d\n", i);
+
+ /* if the stack size is zero, set a default */
+- if (stksize == 0)
++ if (err == EINVAL || stksize == 0)
+ stksize = PTHREAD_STACK_MIN * 2;
+
+ /* allocate memory for a stack on appropriate node */
+--- a/src/hackbench/hackbench.c
++++ b/src/hackbench/hackbench.c
+@@ -25,7 +25,7 @@
+ #include <sys/socket.h>
+ #include <sys/wait.h>
+ #include <sys/time.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <limits.h>
+@@ -34,6 +34,8 @@
+ #include <setjmp.h>
+ #include <sched.h>
+
++#include "musl.h"
++
+ static unsigned int datasize = 100;
+ static unsigned int loops = 100;
+ static unsigned int num_groups = 10;
+--- /dev/null
++++ b/src/include/musl.h
+@@ -0,0 +1,28 @@
++/*
++ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
++ * Time-stamp: <2020-04-04 10:54:01 kurt>
++ */
++
++#ifndef _MUSL_H_
++#define _MUSL_H_
++
++#include <unistd.h>
++#include <sys/syscall.h>
++
++/*
++ * Musl someshow defines sched_* to ENOSYS which is not correct ...
++ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
++ *
++ * Workaround: define them to syscall(...)
++ */
++
++#define sched_getparam(pid, param) \
++ syscall(SYS_sched_getparam, pid, param)
++#define sched_setparam(pid, param) \
++ syscall(SYS_sched_setparam, pid, param)
++#define sched_getscheduler(pid) \
++ syscall(SYS_sched_getscheduler, pid)
++#define sched_setscheduler(pid, policy, param) \
++ syscall(SYS_sched_setscheduler, pid, policy, param)
++
++#endif /* _MUSL_H_ */
+--- a/src/lib/rt-utils.c
++++ b/src/lib/rt-utils.c
+@@ -24,6 +24,7 @@
+ #include <time.h>
+ #include <sys/time.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
+--- a/src/pi_tests/tst-mutexpi10.c
++++ b/src/pi_tests/tst-mutexpi10.c
+@@ -35,6 +35,8 @@
+ #include <string.h>
+ #include <signal.h>
+
++#include "musl.h"
++
+ /* test timeout */
+ #define TIMEOUT 2
+
+--- a/src/pmqtest/pmqtest.c
++++ b/src/pmqtest/pmqtest.c
+@@ -24,6 +24,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/ptsematest/ptsematest.c
++++ b/src/ptsematest/ptsematest.c
+@@ -22,6 +22,7 @@
+ #include <pthread.h>
+ #include <inttypes.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-get_cpu.h"
+ #include "rt-error.h"
+--- a/src/rt-migrate-test/rt-migrate-test.c
++++ b/src/rt-migrate-test/rt-migrate-test.c
+@@ -27,6 +27,7 @@
+
+ #include <linux/unistd.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+
+ int nr_tasks;
+--- a/src/sched_deadline/cyclicdeadline.c
++++ b/src/sched_deadline/cyclicdeadline.c
+@@ -30,6 +30,7 @@
+ #include <linux/unistd.h>
+ #include <linux/magic.h>
+
++#include "musl.h"
+ #include "rt-utils.h"
+ #include "rt-sched.h"
+ #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-2.4.ebuild b/dev-util/rt-tests/rt-tests-2.4.ebuild
new file mode 100644
index 000000000000..b1f8d4299303
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-2.4.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{7..11} )
+
+inherit python-single-r1 toolchain-funcs
+
+DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
+HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/"
+SRC_URI="
+ https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
+ https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
+
+LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="${PYTHON_DEPS}
+ sys-process/numactl"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)" AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake CC="$(tc-getCC)" prefix=/usr DESTDIR="${ED}" install
+ python_fix_shebang "${ED}"
+ python_optimize
+}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2024-05-23 9:17 Florian Schmaus
0 siblings, 0 replies; 9+ messages in thread
From: Florian Schmaus @ 2024-05-23 9:17 UTC (permalink / raw
To: gentoo-commits
commit: 29c76eabcc602b3e00dfeba98888f7da669aed5f
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Thu May 9 08:59:11 2024 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Thu May 23 09:15:34 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=29c76eab
dev-util/rt-tests: drop 2.6
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
dev-util/rt-tests/Manifest | 1 -
dev-util/rt-tests/files/rt-tests-2.6-musl.patch | 342 ------------------------
dev-util/rt-tests/rt-tests-2.6.ebuild | 38 ---
3 files changed, 381 deletions(-)
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 3e1e017cf313..4050036c4406 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1,2 +1 @@
-DIST rt-tests-2.6.tar.xz 104996 BLAKE2B 40b898a0ecf512eafafa277857566cea358277f4fd6aca2595077409dbbb1c2eb4c7ed5ea1b61a378506eca4f989527d7c5fb94d9c3a16d7b0286cc940496cc8 SHA512 0cfb93ef8718b8e291a23963ef8e5bf1092b5f1c377f220d35005c0fdc7982ac074da824cb26ad5b2c71a2ebadd8bf753259c6f3ca9e00f42d9198e2dbc5999a
DIST rt-tests-2.7.tar.xz 106864 BLAKE2B 89af0a92465ca29eb19adb6bb521be377dedb4153fc98bdcce48e1bad71803ed4aad2088227cfc679ce2441d09932acae437911535daec266b7ac2247fbad8d8 SHA512 6f2e523a6ff683473a222dc3b38abd34a06610c78b488d9d103643e410089d03820c76a4f40afaa4694d29f36e1aef6ced584cae9bad72921e3d633e36a5cda3
diff --git a/dev-util/rt-tests/files/rt-tests-2.6-musl.patch b/dev-util/rt-tests/files/rt-tests-2.6-musl.patch
deleted file mode 100644
index 830f31184fe4..000000000000
--- a/dev-util/rt-tests/files/rt-tests-2.6-musl.patch
+++ /dev/null
@@ -1,342 +0,0 @@
-From 0b7a1e0d3463aa8aa4b7dcad0ec154e658d68036 Mon Sep 17 00:00:00 2001
-From: Kurt Kanzenbach <kurt@kmk-computers.de>
-Date: Wed, 1 Apr 2020 20:15:24 +0200
-Subject: [PATCH] all: Fix musl build
-
-There are a few problems:
-
- * pi stress: pthread_attr_setaffinity_np() is not supported
- * cyclictest: SIGEV_THREAD_ID is not supported
- * hackbench: Fix include
- * all: Fix sched_* calls
-
-With these changes applied, the rt-tests seem to run fine.
-
-Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de>
----
- Makefile | 5 --
- src/backfire/sendme.c | 1
- src/cyclictest/cyclictest.c | 68 ++++------------------------------
- src/hackbench/hackbench.c | 4 +-
- src/include/musl.h | 28 ++++++++++++++
- src/lib/rt-utils.c | 1
- src/pi_tests/tst-mutexpi10.c | 2 +
- src/pmqtest/pmqtest.c | 1
- src/ptsematest/ptsematest.c | 1
- src/rt-migrate-test/rt-migrate-test.c | 1
- src/sched_deadline/cyclicdeadline.c | 1
- 11 files changed, 47 insertions(+), 66 deletions(-)
- create mode 100644 src/include/musl.h
-
---- a/Makefile
-+++ b/Makefile
-@@ -7,7 +7,6 @@ OBJDIR = bld
- sources = cyclictest.c \
- hackbench.c \
- pip_stress.c \
-- pi_stress.c \
- pmqtest.c \
- ptsematest.c \
- rt-migrate-test.c \
-@@ -42,7 +41,6 @@ ifeq (${PYLIB},)
- endif
-
- MANPAGES = src/cyclictest/cyclictest.8 \
-- src/pi_tests/pi_stress.8 \
- src/ptsematest/ptsematest.8 \
- src/rt-migrate-test/rt-migrate-test.8 \
- src/sigwaittest/sigwaittest.8 \
-@@ -130,9 +128,6 @@ deadline_test: $(OBJDIR)/deadline_test.o
- signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a $(OBJDIR)/librttestnuma.a
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(RTTESTNUMA)
-
--pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
-- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
--
- hwlatdetect: src/hwlatdetect/hwlatdetect.py
- chmod +x src/hwlatdetect/hwlatdetect.py
- ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
---- a/src/backfire/sendme.c
-+++ b/src/backfire/sendme.c
-@@ -29,6 +29,7 @@
- #include <string.h>
- #include <time.h>
- #include <errno.h>
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
-
---- a/src/cyclictest/cyclictest.c
-+++ b/src/cyclictest/cyclictest.c
-@@ -30,6 +30,7 @@
- #include <sys/utsname.h>
- #include <sys/mman.h>
- #include <sys/syscall.h>
-+#include "musl.h"
- #include "rt_numa.h"
-
- #include "rt-utils.h"
-@@ -545,12 +546,8 @@ static void *timerthread(void *param)
- {
- struct thread_param *par = param;
- struct sched_param schedp;
-- struct sigevent sigev;
- sigset_t sigset;
-- timer_t timer;
- struct timespec now, next, interval, stop = { 0 };
-- struct itimerval itimer;
-- struct itimerspec tspec;
- struct thread_stat *stat = par->stats;
- int stopped = 0;
- cpu_set_t mask;
-@@ -579,14 +576,6 @@ static void *timerthread(void *param)
- sigaddset(&sigset, par->signal);
- sigprocmask(SIG_BLOCK, &sigset, NULL);
-
-- if (par->mode == MODE_CYCLIC) {
-- sigev.sigev_notify = SIGEV_THREAD_ID | SIGEV_SIGNAL;
-- sigev.sigev_signo = par->signal;
-- sigev.sigev_notify_thread_id = stat->tid;
-- timer_create(par->clock, &sigev, &timer);
-- tspec.it_interval = interval;
-- }
--
- memset(&schedp, 0, sizeof(schedp));
- schedp.sched_priority = par->prio;
- if (setscheduler(0, par->policy, &schedp))
-@@ -640,20 +629,6 @@ static void *timerthread(void *param)
- stop = now;
- stop.tv_sec += duration;
- }
-- if (par->mode == MODE_CYCLIC) {
-- if (par->timermode == TIMER_ABSTIME)
-- tspec.it_value = next;
-- else
-- tspec.it_value = interval;
-- timer_settime(timer, par->timermode, &tspec, NULL);
-- }
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_interval.tv_sec = interval.tv_sec;
-- itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
-- itimer.it_value = itimer.it_interval;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
-
- stat->threadstarted++;
-
-@@ -661,16 +636,10 @@ static void *timerthread(void *param)
-
- uint64_t diff;
- unsigned long diff_smi = 0;
-- int sigs, ret;
-+ int ret;
-
- /* Wait for next period */
- switch (par->mode) {
-- case MODE_CYCLIC:
-- case MODE_SYS_ITIMER:
-- if (sigwait(&sigset, &sigs) < 0)
-- goto out;
-- break;
--
- case MODE_CLOCK_NANOSLEEP:
- if (par->timermode == TIMER_ABSTIME) {
- ret = clock_nanosleep(par->clock, TIMER_ABSTIME,
-@@ -791,11 +760,6 @@ static void *timerthread(void *param)
-
- next.tv_sec += interval.tv_sec;
- next.tv_nsec += interval.tv_nsec;
-- if (par->mode == MODE_CYCLIC) {
-- int overrun_count = timer_getoverrun(timer);
-- next.tv_sec += overrun_count * interval.tv_sec;
-- next.tv_nsec += overrun_count * interval.tv_nsec;
-- }
- tsnorm(&next);
-
- while (tsgreater(&now, &next)) {
-@@ -820,17 +784,6 @@ out:
- pthread_mutex_unlock(&refresh_on_max_lock);
- }
-
-- if (par->mode == MODE_CYCLIC)
-- timer_delete(timer);
--
-- if (par->mode == MODE_SYS_ITIMER) {
-- itimer.it_value.tv_sec = 0;
-- itimer.it_value.tv_usec = 0;
-- itimer.it_interval.tv_sec = 0;
-- itimer.it_interval.tv_usec = 0;
-- setitimer(ITIMER_REAL, &itimer, NULL);
-- }
--
- /* close msr file */
- if (smi)
- close(par->msr_fd);
-@@ -1226,7 +1179,8 @@ static void process_options(int argc, ch
- case OPT_VERBOSE: verbose = 1; break;
- case 'x':
- case OPT_POSIX_TIMERS:
-- use_nanosleep = MODE_CYCLIC; break;
-+ fatal("--posix_timers is not available on your libc\n");
-+ break;
- case '?':
- case OPT_HELP:
- display_help(0); break;
-@@ -1259,13 +1213,6 @@ static void process_options(int argc, ch
- }
- }
-
-- if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) {
-- warn("The system option requires clock_nanosleep\n");
-- warn("and is not compatible with posix_timers\n");
-- warn("Using clock_nanosleep\n");
-- use_nanosleep = MODE_CLOCK_NANOSLEEP;
-- }
--
- /* if smp wasn't requested, test for numa automatically */
- if (!smp) {
- numa = numa_initialize();
-@@ -1988,7 +1935,6 @@ int main(int argc, char **argv)
-
- }
-
--
- mode = use_nanosleep + use_system;
-
- sigemptyset(&sigset);
-@@ -2039,6 +1985,7 @@ int main(int argc, char **argv)
- void *currstk;
- size_t stksize;
- int node_cpu = cpu;
-+ int err;
-
- if (node_cpu == -1)
- node_cpu = cpu_for_thread_ua(i, max_cpus);
-@@ -2047,11 +1994,12 @@ int main(int argc, char **argv)
- node = rt_numa_numa_node_of_cpu(node_cpu);
-
- /* get the stack size set for this thread */
-- if (pthread_attr_getstack(&attr, &currstk, &stksize))
-+ err = pthread_attr_getstack(&attr, &currstk, &stksize);
-+ if (err != EINVAL)
- fatal("failed to get stack size for thread %d\n", i);
-
- /* if the stack size is zero, set a default */
-- if (stksize == 0)
-+ if (err == EINVAL || stksize == 0)
- stksize = PTHREAD_STACK_MIN * 2;
-
- /* allocate memory for a stack on appropriate node */
---- a/src/hackbench/hackbench.c
-+++ b/src/hackbench/hackbench.c
-@@ -25,7 +25,7 @@
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <sys/time.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <limits.h>
-@@ -34,6 +34,8 @@
- #include <setjmp.h>
- #include <sched.h>
-
-+#include "musl.h"
-+
- static unsigned int datasize = 100;
- static unsigned int loops = 100;
- static unsigned int num_groups = 10;
---- /dev/null
-+++ b/src/include/musl.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2020 Kurt Kanzenbach <kurt@kmk-computers.de>
-+ * Time-stamp: <2020-04-04 10:54:01 kurt>
-+ */
-+
-+#ifndef _MUSL_H_
-+#define _MUSL_H_
-+
-+#include <unistd.h>
-+#include <sys/syscall.h>
-+
-+/*
-+ * Musl someshow defines sched_* to ENOSYS which is not correct ...
-+ * See commit 1e21e78bf7a5 ("add support for thread scheduling (POSIX TPS option)")
-+ *
-+ * Workaround: define them to syscall(...)
-+ */
-+
-+#define sched_getparam(pid, param) \
-+ syscall(SYS_sched_getparam, pid, param)
-+#define sched_setparam(pid, param) \
-+ syscall(SYS_sched_setparam, pid, param)
-+#define sched_getscheduler(pid) \
-+ syscall(SYS_sched_getscheduler, pid)
-+#define sched_setscheduler(pid, policy, param) \
-+ syscall(SYS_sched_setscheduler, pid, policy, param)
-+
-+#endif /* _MUSL_H_ */
---- a/src/lib/rt-utils.c
-+++ b/src/lib/rt-utils.c
-@@ -24,6 +24,7 @@
- #include <time.h>
- #include <sys/time.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-sched.h"
- #include "rt-error.h"
---- a/src/pi_tests/tst-mutexpi10.c
-+++ b/src/pi_tests/tst-mutexpi10.c
-@@ -35,6 +35,8 @@
- #include <string.h>
- #include <signal.h>
-
-+#include "musl.h"
-+
- /* test timeout */
- #define TIMEOUT 2
-
---- a/src/pmqtest/pmqtest.c
-+++ b/src/pmqtest/pmqtest.c
-@@ -24,6 +24,7 @@
- #include <pthread.h>
- #include <inttypes.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "rt-error.h"
---- a/src/ptsematest/ptsematest.c
-+++ b/src/ptsematest/ptsematest.c
-@@ -22,6 +22,7 @@
- #include <pthread.h>
- #include <inttypes.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-get_cpu.h"
- #include "rt-error.h"
---- a/src/rt-migrate-test/rt-migrate-test.c
-+++ b/src/rt-migrate-test/rt-migrate-test.c
-@@ -27,6 +27,7 @@
-
- #include <linux/unistd.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
-
- int nr_tasks;
---- a/src/sched_deadline/cyclicdeadline.c
-+++ b/src/sched_deadline/cyclicdeadline.c
-@@ -30,6 +30,7 @@
- #include <linux/unistd.h>
- #include <linux/magic.h>
-
-+#include "musl.h"
- #include "rt-utils.h"
- #include "rt-sched.h"
- #include "rt-error.h"
diff --git a/dev-util/rt-tests/rt-tests-2.6.ebuild b/dev-util/rt-tests/rt-tests-2.6.ebuild
deleted file mode 100644
index 91afebe3ca79..000000000000
--- a/dev-util/rt-tests/rt-tests-2.6.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit python-single-r1 toolchain-funcs
-
-DESCRIPTION="A collection of latency testing tools for the linux(-rt) kernel"
-HOMEPAGE="https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/"
-SRC_URI="
- https://kernel.org/pub/linux/utils/rt-tests/${P}.tar.xz
- https://kernel.org/pub/linux/utils/rt-tests/older/${P}.tar.xz"
-
-LICENSE="GPL-2 GPL-2+ LGPL-2.1+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-DEPEND="${PYTHON_DEPS}
- sys-process/numactl"
-RDEPEND="${DEPEND}"
-
-src_prepare() {
- default
- use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
-}
-
-src_compile() {
- emake CC="$(tc-getCC)" AR="$(tc-getAR)"
-}
-
-src_install() {
- emake CC="$(tc-getCC)" prefix=/usr DESTDIR="${ED}" install
- python_fix_shebang "${ED}"
- python_optimize
-}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/
@ 2025-02-13 12:42 Sam James
0 siblings, 0 replies; 9+ messages in thread
From: Sam James @ 2025-02-13 12:42 UTC (permalink / raw
To: gentoo-commits
commit: ccc69af73f53fbb89fd19e149ef99cf4d1f1c295
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Tue Feb 11 16:31:12 2025 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Feb 13 12:39:17 2025 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ccc69af7
dev-util/rt-tests: Fix build with glibc-2.41
Fix build with glibc-2.41.
Closes: https://bugs.gentoo.org/949572
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Closes: https://github.com/gentoo/gentoo/pull/40534
Signed-off-by: Sam James <sam <AT> gentoo.org>
dev-util/rt-tests/files/rt-tests-2.8-glibc.patch | 55 ++++++++++++++++++++++++
dev-util/rt-tests/rt-tests-2.8.ebuild | 6 ++-
2 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/dev-util/rt-tests/files/rt-tests-2.8-glibc.patch b/dev-util/rt-tests/files/rt-tests-2.8-glibc.patch
new file mode 100644
index 000000000000..7cfbdaa0236b
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.8-glibc.patch
@@ -0,0 +1,55 @@
+From 280e198c39d1b17d0491d7c4e7afda97ae6c8e6f Mon Sep 17 00:00:00 2001
+From: Yaakov Selkowitz <yselkowi@redhat.com>
+Date: Wed, 29 Jan 2025 16:46:11 -0500
+Subject: [PATCH] Fix rt-tests build with glibc-2.41
+
+The sched_*attr APIs were added to glibc
+https://sourceware.org/git/?p=glibc.git;a=commit;h=21571ca0d70302909cf72707b2a7736cf12190a0
+
+This fixes the build conflict in rt-tests with glibc-2.4
+
+Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
+Signed-off-by: John Kacur <jkacur@redhat.com>
+---
+ src/include/rt-sched.h | 2 ++
+ src/lib/rt-sched.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h
+index 80171c76e0ee..dfd7f45f51cc 100644
+--- a/src/include/rt-sched.h
++++ b/src/include/rt-sched.h
+@@ -42,6 +42,7 @@
+ #define __NR_sched_getattr 275
+ #endif
+
++#if ! __GLIBC_PREREQ(2, 41)
+ struct sched_attr {
+ uint32_t size;
+ uint32_t sched_policy;
+@@ -67,5 +68,6 @@ int sched_getattr(pid_t pid,
+ struct sched_attr *attr,
+ unsigned int size,
+ unsigned int flags);
++#endif
+
+ #endif /* __RT_SCHED_H__ */
+diff --git a/src/lib/rt-sched.c b/src/lib/rt-sched.c
+index 8023bc70c473..2500abde26e4 100644
+--- a/src/lib/rt-sched.c
++++ b/src/lib/rt-sched.c
+@@ -14,6 +14,7 @@
+
+ #include "rt-sched.h"
+
++#if ! __GLIBC_PREREQ(2, 41)
+ int sched_setattr(pid_t pid,
+ const struct sched_attr *attr,
+ unsigned int flags)
+@@ -28,3 +29,4 @@ int sched_getattr(pid_t pid,
+ {
+ return syscall(__NR_sched_getattr, pid, attr, size, flags);
+ }
++#endif
+--
+2.47.1
diff --git a/dev-util/rt-tests/rt-tests-2.8.ebuild b/dev-util/rt-tests/rt-tests-2.8.ebuild
index d11236401857..8749b0d1bb86 100644
--- a/dev-util/rt-tests/rt-tests-2.8.ebuild
+++ b/dev-util/rt-tests/rt-tests-2.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,6 +22,10 @@ DEPEND="${PYTHON_DEPS}
sys-process/numactl"
RDEPEND="${DEPEND}"
+PATCHES=(
+ "${FILESDIR}/${P}-glibc.patch"
+)
+
src_prepare() {
default
use elibc_musl && eapply "${FILESDIR}/${P}-musl.patch"
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-02-13 12:42 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-14 14:32 [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/ Joonas Niilola
-- strict thread matches above, loose matches on Subject: below --
2025-02-13 12:42 Sam James
2024-05-23 9:17 Florian Schmaus
2022-07-15 8:38 Joonas Niilola
2022-01-05 19:19 Florian Schmaus
2021-09-04 6:26 Joonas Niilola
2021-07-14 14:32 Joonas Niilola
2020-12-27 3:37 Sam James
2020-10-07 3:44 Sam James
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox