summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarsten Emde <C.Emde@osadl.org>2010-03-08 09:37:50 +0100
committerJohn Kacur <jkacur@redhat.com>2010-03-08 13:36:11 +0100
commit7dd5ce77096972beeada84450496eb3489e3e38f (patch)
treec94cfb0f1cf2b1589dc99ac5c22b107ee492c105
parent1263ebde632899a399b59ee8eec926bb81199122 (diff)
downloadrt-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.c25
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++) {