From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 69E291580B3 for ; Sat, 4 Sep 2021 06:26:47 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1351DE086A; Sat, 4 Sep 2021 06:26:46 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9B792E086A for ; Sat, 4 Sep 2021 06:26:45 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 1820933BF3C for ; Sat, 4 Sep 2021 06:26:44 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 6D409A2 for ; Sat, 4 Sep 2021 06:26:42 +0000 (UTC) From: "Joonas Niilola" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Joonas Niilola" Message-ID: <1630734404.54b8effd554c06f82b22ea4d8467f69e7c3925e5.juippis@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/rt-tests/, dev-util/rt-tests/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-util/rt-tests/Manifest dev-util/rt-tests/files/rt-tests-2.2-musl.patch dev-util/rt-tests/rt-tests-2.2.ebuild X-VCS-Directories: dev-util/rt-tests/files/ dev-util/rt-tests/ X-VCS-Committer: juippis X-VCS-Committer-Name: Joonas Niilola X-VCS-Revision: 54b8effd554c06f82b22ea4d8467f69e7c3925e5 X-VCS-Branch: master Date: Sat, 4 Sep 2021 06:26:42 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 8a63f0da-2e65-4ffe-9ac0-94ef69d710d0 X-Archives-Hash: 9a04754a6396a448517181fe32620476 commit: 54b8effd554c06f82b22ea4d8467f69e7c3925e5 Author: Kurt Kanzenbach kmk-computers de> AuthorDate: Thu Sep 2 19:36:44 2021 +0000 Commit: Joonas Niilola gentoo 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 kmk-computers.de> Signed-off-by: Joonas Niilola 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 +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 +--- + 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 + #include + #include ++#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 + #include + #include ++#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 + #include + #include +-#include ++#include + #include + #include + #include + #include + #include + ++#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 ++ * Time-stamp: <2020-04-04 10:54:01 kurt> ++ */ ++ ++#ifndef _MUSL_H_ ++#define _MUSL_H_ ++ ++#include ++#include ++ ++/* ++ * 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 + #include + ++#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 + #include + ++#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 + #include + ++#include "musl.h" ++ + /* test timeout */ + #define TIMEOUT 2 + +--- a/src/pmqtest/pmqtest.c ++++ b/src/pmqtest/pmqtest.c +@@ -24,6 +24,7 @@ + #include + #include + ++#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 + #include + ++#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 + ++#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 + #include + ++#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 +}