diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-12-13 02:01:50 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-12-13 02:01:50 +0000 |
commit | 2a3e0d61b3d88306b6fae46756f9ba7d230222ae (patch) | |
tree | a0d3259dd259861a49a2d3e6e9220beaa8ec39c2 /dev-util/rt-tests | |
parent | 39c32f4d5dca9f6293fccb69e9d50baf494c8de4 (diff) |
gentoo auto-resync : 13:12:2024 - 02:01:50
Diffstat (limited to 'dev-util/rt-tests')
-rw-r--r-- | dev-util/rt-tests/Manifest | 3 | ||||
-rw-r--r-- | dev-util/rt-tests/files/rt-tests-2.8-musl.patch | 366 | ||||
-rw-r--r-- | dev-util/rt-tests/rt-tests-2.8.ebuild | 38 |
3 files changed, 407 insertions, 0 deletions
diff --git a/dev-util/rt-tests/Manifest b/dev-util/rt-tests/Manifest index 9fe289aba667..2e09d6d07ef6 100644 --- a/dev-util/rt-tests/Manifest +++ b/dev-util/rt-tests/Manifest @@ -1,4 +1,7 @@ AUX rt-tests-2.7-musl.patch 10247 BLAKE2B fe5fde87f14efa50c90e593d4c8c858912131e25c0af90b2e90ba1d08ec50ec82d5114a1ea17c0f07b1ba4135689ff1862209dd79d9b021a2a8d5e58eca9ab3c SHA512 3aeafa3e6d2882960638cd57183983c0880f46c8116493bf76764b04a6087d88777438c1ff78d20217f879f3386fc4fac9b29a5ebb68f7d0e695ae3b324cedd7 +AUX rt-tests-2.8-musl.patch 10249 BLAKE2B 1843d51dd4cc422b53f49f9d99418a719414f5298c2b26a552dea4a269400a5a63b0d439f306b6135b6a534c2c4833221c766721089e9946d59ef348b1250626 SHA512 d6eeae9975d833b7686abc54b4e77ad874a23aa7aceb6b9dc6eba2b9149fb6bf4f03b929e7dbf1d66d7010fd5e2208fad90d6e638d722c550634b8871b52d089 DIST rt-tests-2.7.tar.xz 106864 BLAKE2B 89af0a92465ca29eb19adb6bb521be377dedb4153fc98bdcce48e1bad71803ed4aad2088227cfc679ce2441d09932acae437911535daec266b7ac2247fbad8d8 SHA512 6f2e523a6ff683473a222dc3b38abd34a06610c78b488d9d103643e410089d03820c76a4f40afaa4694d29f36e1aef6ced584cae9bad72921e3d633e36a5cda3 +DIST rt-tests-2.8.tar.xz 108480 BLAKE2B 852143d6d8017f08cecf847e5feb8d59390373828826d75f5d22259208fc0c3e3966615039cfc9a832648377044ffd10cced481796d68426c70bb824b558c1f4 SHA512 e3fa03258cd1fe22a65c6af9ac17398dba79fbb5a92f6aacbbb06bfb677982abc421d699d2889850505e83d78b0605cced7dbfb176e023cc34bdd25ec819a3a5 EBUILD rt-tests-2.7.ebuild 916 BLAKE2B bb7156a6af5a00eec881410acf6fa23d86c68947ca8e82450662771e623139171c3ca9440bf4ac1891131588c9ee7c5bc996af6d00c3995943d812187a810d58 SHA512 8f38767eb8a0d60fcc7392646010933b562682826cd549cafe56788585c2a85ec499a820296cc468aaeb9b045b36097c7bff110f339364ea737e9ba5b46ef7be +EBUILD rt-tests-2.8.ebuild 916 BLAKE2B bb7156a6af5a00eec881410acf6fa23d86c68947ca8e82450662771e623139171c3ca9440bf4ac1891131588c9ee7c5bc996af6d00c3995943d812187a810d58 SHA512 8f38767eb8a0d60fcc7392646010933b562682826cd549cafe56788585c2a85ec499a820296cc468aaeb9b045b36097c7bff110f339364ea737e9ba5b46ef7be MISC metadata.xml 837 BLAKE2B b0d50d18a087e0e3adde1eeeeec4f9e3cf69d921d893c5f26f9205979d53cb3fb67c66da49a19646f00463456337edfa6482a129ba6f53bdefcc083b6420a4c8 SHA512 943f07d2ac45ada4c0e961f43543c7f8f5a1e96ae6a69e8e4f99ca47f7e43a8ca2525a299f9451b0877349542955e6428e6029dfae8e30e67ca970b883eb04d7 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 +} |