Commit 3bc2a39c authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Ingo Molnar

perf timechart: Fix the wakeup-arrows that point to non-visible processes

The timechart wakeup arrows currently show no process
information when the waker/wakee are processes that are not
actually chosen to be shown on the timechart.

This patch fixes this oversight, by looking through all
processes (after giving preference to visible processes) as well
as falling back to just showing the PID if no name for the
process can be resolved.
Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <20091020064649.0e4959b2@infradead.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent dc79959a
...@@ -765,19 +765,40 @@ static void draw_wakeups(void) ...@@ -765,19 +765,40 @@ static void draw_wakeups(void)
if (c->Y && c->start_time <= we->time && c->end_time >= we->time) { if (c->Y && c->start_time <= we->time && c->end_time >= we->time) {
if (p->pid == we->waker) { if (p->pid == we->waker) {
from = c->Y; from = c->Y;
task_from = c->comm; task_from = strdup(c->comm);
} }
if (p->pid == we->wakee) { if (p->pid == we->wakee) {
to = c->Y; to = c->Y;
task_to = c->comm; task_to = strdup(c->comm);
} }
} }
c = c->next; c = c->next;
} }
c = p->all;
while (c) {
if (p->pid == we->waker && !from) {
from = c->Y;
task_from = strdup(c->comm);
}
if (p->pid == we->wakee && !to) {
to = c->Y;
task_to = strdup(c->comm);
}
c = c->next;
}
} }
p = p->next; p = p->next;
} }
if (!task_from) {
task_from = malloc(40);
sprintf(task_from, "[%i]", we->waker);
}
if (!task_to) {
task_to = malloc(40);
sprintf(task_to, "[%i]", we->wakee);
}
if (we->waker == -1) if (we->waker == -1)
svg_interrupt(we->time, to); svg_interrupt(we->time, to);
else if (from && to && abs(from - to) == 1) else if (from && to && abs(from - to) == 1)
...@@ -785,6 +806,9 @@ static void draw_wakeups(void) ...@@ -785,6 +806,9 @@ static void draw_wakeups(void)
else else
svg_partial_wakeline(we->time, from, task_from, to, task_to); svg_partial_wakeline(we->time, from, task_from, to, task_to);
we = we->next; we = we->next;
free(task_from);
free(task_to);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment