diff options
author | Carsten Emde <C.Emde@osadl.org> | 2010-03-08 09:37:50 +0100 |
---|---|---|
committer | John Kacur <jkacur@redhat.com> | 2010-03-08 13:36:11 +0100 |
commit | 7dd5ce77096972beeada84450496eb3489e3e38f (patch) | |
tree | c94cfb0f1cf2b1589dc99ac5c22b107ee492c105 | |
parent | 1263ebde632899a399b59ee8eec926bb81199122 (diff) | |
download | rt-tests-7dd5ce77096972beeada84450496eb3489e3e38f.tar.gz |
fix-policy-display-for-cyclictest.patch
If the policy is forced to SCHED_OTHER, since the priority no longer
fits into the SCHED_FIFO or SCHED_RR range, the policy display of
cyclictest is somewhat incorrect.
Display all policies.
Also make the variable policystr static; the condition
"if (!policystr)" is useless, otherwise.
In addition, place the priority logic before decrementing the priority;
a priority of 1 is incorrectly made SCHED_OTHER, otherwise.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Acked-by: John Kacur <jkacur@redhat.com>
-rw-r--r-- | src/cyclictest/cyclictest.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index e4febec..cfa0ada 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -156,6 +156,7 @@ static int histogram = 0; static int duration = 0; static int use_nsecs = 0; static int refresh_on_max; +static int force_sched_other; static pthread_cond_t refresh_on_max_cond = PTHREAD_COND_INITIALIZER; static pthread_mutex_t refresh_on_max_lock = PTHREAD_MUTEX_INITIALIZER; @@ -1295,11 +1296,14 @@ int main(int argc, char **argv) } par->prio = priority; + if (priority && (policy == SCHED_FIFO || policy == SCHED_RR)) + par->policy = policy; + else { + par->policy = SCHED_OTHER; + force_sched_other = 1; + } if (priority && !histogram && !smp && !numa) priority--; - if (priority && policy == SCHED_FIFO) par->policy = SCHED_FIFO; - else if (priority && policy == SCHED_RR) par->policy = SCHED_RR; - else par->policy = SCHED_OTHER; par->clock = clocksources[clocksel]; par->mode = mode; par->timermode = timermode; @@ -1330,18 +1334,27 @@ int main(int argc, char **argv) while (!shutdown) { char lavg[256]; int fd, len, allstopped = 0; - char *policystr = NULL; + static char *policystr = NULL; + static char *slash = NULL; + static char *policystr2; if (!policystr) policystr = policyname(policy); + if (!slash) { + if (force_sched_other) { + slash = "/"; + policystr2 = policyname(SCHED_OTHER); + } else + slash = policystr2 = ""; + } if (!verbose && !quiet) { fd = open("/proc/loadavg", O_RDONLY, 0666); len = read(fd, &lavg, 255); close(fd); lavg[len-1] = 0x0; - printf("policy: %s: loadavg: %s \n\n", - policystr, lavg); + printf("policy: %s%s%s: loadavg: %s \n\n", + policystr, slash, policystr2, lavg); } for (i = 0; i < num_threads; i++) { |