This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Tom Tsou gerrit-no-reply at lists.osmocom.orgTom Tsou has submitted this change and it was merged. Change subject: Add '-t' command line option to enable SCHED_RR ...................................................................... Add '-t' command line option to enable SCHED_RR SCHED_RR allows us to operate osmo-trx reliable even under exceptionally high system load, as the realtime scheduler priority will have higher priority than the other "regular" tasks on the system. Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f Closes: OS#2344 --- M Transceiver52M/osmo-trx.cpp 1 file changed, 29 insertions(+), 2 deletions(-) Approvals: Tom Tsou: Looks good to me, approved Jenkins Builder: Verified Holger Freyther: Looks good to me, but someone else must approve diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp index 31a99cf..61b3098 100644 --- a/Transceiver52M/osmo-trx.cpp +++ b/Transceiver52M/osmo-trx.cpp @@ -27,6 +27,7 @@ #include <signal.h> #include <stdlib.h> #include <unistd.h> +#include <sched.h> #include <GSMCommon.h> #include <Logger.h> @@ -77,6 +78,7 @@ double rssi_offset; bool swap_channels; bool edge; + int sched_rr; }; ConfigurationTable gConfig; @@ -259,7 +261,8 @@ " -r Random Normal Burst test mode with TSC\n" " -A Random Access Burst test mode with delay\n" " -R RSSI to dBm offset in dB (default=0)\n" - " -S Swap channels (UmTRX only)\n", + " -S Swap channels (UmTRX only)\n" + " -t SCHED_RR real-time priority (1..32)\n", "EMERG, ALERT, CRT, ERR, WARNING, NOTICE, INFO, DEBUG"); } @@ -283,8 +286,9 @@ config->rssi_offset = 0.0; config->swap_channels = false; config->edge = false; + config->sched_rr = -1; - while ((option = getopt(argc, argv, "ha:l:i:p:c:dmxgfo:s:b:r:A:R:Se")) != -1) { + while ((option = getopt(argc, argv, "ha:l:i:p:c:dmxgfo:s:b:r:A:R:Set:")) != -1) { switch (option) { case 'h': print_help(); @@ -343,6 +347,9 @@ case 'e': config->edge = true; break; + case 't': + config->sched_rr = atoi(optarg); + break; default: print_help(); exit(0); @@ -386,6 +393,21 @@ exit(0); } +static int set_sched_rr(int prio) +{ + struct sched_param param; + int rc; + memset(¶m, 0, sizeof(param)); + param.sched_priority = prio; + printf("Setting SCHED_RR priority(%d)\n", param.sched_priority); + rc = sched_setscheduler(getpid(), SCHED_RR, ¶m); + if (rc != 0) { + std::cerr << "Config: Setting SCHED_RR failed" << std::endl; + return -1; + } + return 0; +} + int main(int argc, char *argv[]) { int type, chans, ref; @@ -424,6 +446,11 @@ handle_options(argc, argv, &config); + if (config.sched_rr != -1) { + if (set_sched_rr(config.sched_rr) < 0) + return EXIT_FAILURE; + } + setup_signal_handlers(); /* Check database sanity */ -- To view, visit https://gerrit.osmocom.org/3080 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f Gerrit-PatchSet: 2 Gerrit-Project: osmo-trx Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Holger Freyther <holger at freyther.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Max <msuraev at sysmocom.de> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de> Gerrit-Reviewer: Tom Tsou <tom at tsou.cc> Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>