public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/files/, dev-util/rt-tests/
Date: Thu, 12 Dec 2024 05:40:22 +0000 (UTC)	[thread overview]
Message-ID: <1733981921.fe80ef0b87eda15b10e24b4ddff50fde1a916747.sam@gentoo> (raw)

commit:     fe80ef0b87eda15b10e24b4ddff50fde1a916747
Author:     Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Wed Dec  4 16:07:35 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec 12 05:38:41 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fe80ef0b

dev-util/rt-tests: add 2.8

Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
Closes: https://github.com/gentoo/gentoo/pull/39593
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-util/rt-tests/Manifest                      |   1 +
 dev-util/rt-tests/files/rt-tests-2.8-musl.patch | 366 ++++++++++++++++++++++++
 dev-util/rt-tests/rt-tests-2.8.ebuild           |  38 +++
 3 files changed, 405 insertions(+)

diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest
index 4050036c4406..e14e4f2c9737 100644
--- a/dev-util/rt-tests/Manifest
+++ b/dev-util/rt-tests/Manifest
@@ -1 +1,2 @@
 DIST rt-tests-2.7.tar.xz 106864 BLAKE2B 89af0a92465ca29eb19adb6bb521be377dedb4153fc98bdcce48e1bad71803ed4aad2088227cfc679ce2441d09932acae437911535daec266b7ac2247fbad8d8 SHA512 6f2e523a6ff683473a222dc3b38abd34a06610c78b488d9d103643e410089d03820c76a4f40afaa4694d29f36e1aef6ced584cae9bad72921e3d633e36a5cda3
+DIST rt-tests-2.8.tar.xz 108480 BLAKE2B 852143d6d8017f08cecf847e5feb8d59390373828826d75f5d22259208fc0c3e3966615039cfc9a832648377044ffd10cced481796d68426c70bb824b558c1f4 SHA512 e3fa03258cd1fe22a65c6af9ac17398dba79fbb5a92f6aacbbb06bfb677982abc421d699d2889850505e83d78b0605cced7dbfb176e023cc34bdd25ec819a3a5

diff --git a/dev-util/rt-tests/files/rt-tests-2.8-musl.patch b/dev-util/rt-tests/files/rt-tests-2.8-musl.patch
new file mode 100644
index 000000000000..c98111331a31
--- /dev/null
+++ b/dev-util/rt-tests/files/rt-tests-2.8-musl.patch
@@ -0,0 +1,366 @@
+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, add missing casts
+ * 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             |   12 +++---
+ 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, 51 insertions(+), 70 deletions(-)
+ create mode 100644 src/include/musl.h
+
+--- a/Makefile
++++ b/Makefile
+@@ -10,7 +10,6 @@ OBJDIR = bld
+ sources = cyclictest.c \
+ 	  hackbench.c \
+ 	  pip_stress.c \
+-	  pi_stress.c \
+ 	  pmqtest.c \
+ 	  ptsematest.c \
+ 	  rt-migrate-test.c \
+@@ -58,7 +57,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 \
+@@ -146,9 +144,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
+@@ -16,6 +16,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"
+@@ -634,12 +635,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;
+@@ -668,14 +665,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))
+@@ -729,20 +718,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++;
+ 
+@@ -750,16 +725,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,
+@@ -873,11 +842,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)) {
+@@ -902,17 +866,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);
+@@ -1315,7 +1268,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;
+@@ -1351,13 +1305,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();
+@@ -2071,7 +2018,6 @@ int main(int argc, char **argv)
+ 
+ 	}
+ 
+-
+ 	mode = use_nanosleep + use_system;
+ 
+ 	sigemptyset(&sigset);
+@@ -2126,6 +2072,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);
+@@ -2134,11 +2081,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;
+@@ -128,9 +130,9 @@ static int inet_socketpair(int fds[2])
+ 	sin.sin_port = 0;
+ 	sin.sin_addr.s_addr = inet_addr("127.0.0.1");
+ 
+-	if (bind(s1, &sin, len) < 0)
++	if (bind(s1, (struct sockaddr *)&sin, len) < 0)
+ 		barf("bind");
+-	if (getsockname(s1, &sin, &len) < 0)
++	if (getsockname(s1, (struct sockaddr *)&sin, &len) < 0)
+ 		barf("getsockname");
+ 	if (listen(s1, 10) < 0)
+ 		barf("listen");
+@@ -138,9 +140,9 @@ static int inet_socketpair(int fds[2])
+ 		barf("ioctl");
+ 	if (ioctl(s1, FIONBIO, &ul) < 0)
+ 		barf("ioctl");
+-	if (connect(s2, &sin, len) < 0)
++	if (connect(s2, (struct sockaddr *)&sin, len) < 0)
+ 		barf("connect");
+-	if ((fds[0] = accept(s1, &sin, &len)) < 0)
++	if ((fds[0] = accept(s1, (struct sockaddr *)&sin, &len)) < 0)
+ 		barf("accept");
+ 	ul = 0;
+ 	if (ioctl(s2, FIONBIO, &ul) < 0)
+--- /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.8.ebuild b/dev-util/rt-tests/rt-tests-2.8.ebuild
new file mode 100644
index 000000000000..d11236401857
--- /dev/null
+++ b/dev-util/rt-tests/rt-tests-2.8.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+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
+}


             reply	other threads:[~2024-12-12  5:40 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-12  5:40 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-05-23  9:17 [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/files/, dev-util/rt-tests/ Florian Schmaus
2023-12-27  7:54 Viorel Munteanu
2023-12-27  7:54 Viorel Munteanu
2023-02-05  8:30 Joonas Niilola
2023-02-05  8:30 Joonas Niilola
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
2020-04-05  7:18 Joonas Niilola
2020-03-03 14:54 Joonas Niilola
2020-01-23  9:53 Joonas Niilola

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1733981921.fe80ef0b87eda15b10e24b4ddff50fde1a916747.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox