diff options
author | Clark Williams <williams@redhat.com> | 2012-02-13 12:37:49 -0600 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2012-02-13 12:37:49 -0600 |
commit | 2819d683a31765c8f46e7e0a97cd6806516edc7a (patch) | |
tree | 98dff05d9864d410e78d542028b2f75a6f7a4192 | |
parent | 1d632c3bf9deefbff733509b4fd0cad8ce4fa782 (diff) | |
parent | 64e635bc513a3a114729f86de7a87780b2737605 (diff) | |
download | rt-tests-2819d683a31765c8f46e7e0a97cd6806516edc7a.tar.gz |
Merge branch 'master' into work
-rw-r--r-- | src/cyclictest/cyclictest.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index c0cde4a..6a61a9c 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -33,6 +33,7 @@ #include <sys/time.h> #include <sys/utsname.h> #include <sys/mman.h> +#include <sys/resource.h> #include "rt_numa.h" #include "rt-utils.h" @@ -642,7 +643,10 @@ void *timerthread(void *param) memset(&schedp, 0, sizeof(schedp)); schedp.sched_priority = par->prio; - sched_setscheduler(0, par->policy, &schedp); + if(sched_setscheduler(0, par->policy, &schedp) == -1){ + fprintf(stderr,"sched_setscheduler prio %d failed\n",par->prio); + par->prio=0; + } /* Get current time */ clock_gettime(par->clock, &now); @@ -945,6 +949,7 @@ static void process_options (int argc, char *argv[]) { int error = 0; int max_cpus = sysconf(_SC_NPROCESSORS_CONF); + struct rlimit rlim; for (;;) { int option_index = 0; @@ -1155,6 +1160,15 @@ static void process_options (int argc, char *argv[]) policy = SCHED_FIFO; } + /* check against rlimit see /etc/security/limits.conf */ + getrlimit(RLIMIT_RTPRIO, &rlim); + if ( priority > rlim.rlim_max){ + fprintf(stderr, "defaulting realtime priority to %d\n", + (int) rlim.rlim_max); + priority = rlim.rlim_max; + } + + if ((policy == SCHED_FIFO || policy == SCHED_RR) && priority == 0) { fprintf(stderr, "defaulting realtime priority to %d\n", num_threads+1); |