From 3aacee0f369acbef16743746c1314910bbc3cd62 Mon Sep 17 00:00:00 2001 From: Qiao Nuohan Date: Sat, 27 Sep 2014 15:04:22 +0800 Subject: [PATCH v3 19/21] modify ps -l/-m -C cpu to hide offline cpus' data ps -l/-m -C cpu is used to dump most-recently run tasks on specified cpus. This patch is used to hide data of offline cpus. The original output is like below: crash> ps -l -C 2 CPU: 2 [ 3443744250246] [??] PID: 25 TASK: ffff88003dafb8e0 CPU: 2 COMMAND: "migration/2" [ 3443744209862] [??] PID: 24 TASK: ffff88003dafad80 CPU: 2 COMMAND: "watchdog/2" ... [ 501159134] [IN] PID: 52 TASK: ffff88003d4a38e0 CPU: 2 COMMAND: "crypto" [ 409792745] [IN] PID: 48 TASK: ffff88003d4a4440 CPU: 2 COMMAND: "kswapd0" [ 0] [RU] PID: 0 TASK: ffff88003dad5b00 CPU: 2 COMMAND: "swapper/2" With data of offline cpu(cpu #2) hiden, the output is like below: crash> ps -l -C 2 CPU: 2 [OFFLINE] Signed-off-by: Qiao Nuohan --- task.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/task.c b/task.c index 53fc060..86be744 100755 --- a/task.c +++ b/task.c @@ -3332,8 +3332,14 @@ show_last_run(struct task_context *tc, struct psinfo *psi) for (c = others = 0; c < kt->cpus; c++) { if (!NUM_IN_BITMAP(psi->cpus, c)) continue; - fprintf(fp, "%sCPU: %d\n", + fprintf(fp, "%sCPU: %d", others++ ? "\n" : "", c); + if (hide_offline_cpu(c)) { + fprintf(fp, " [OFFLINE]\n"); + continue; + } else + fprintf(fp, "\n"); + tcp = FIRST_CONTEXT(); for (i = 0; i < RUNNING_TASKS(); i++, tcp++) { if (tcp->processor != c) @@ -3415,9 +3421,15 @@ show_milliseconds(struct task_context *tc, struct psinfo *psi) if (!NUM_IN_BITMAP(psi->cpus, c)) continue; - fprintf(fp, "%sCPU: %d\n", + fprintf(fp, "%sCPU: %d", others++ ? "\n" : "", c); + if (hide_offline_cpu(c)) { + fprintf(fp, " [OFFLINE]\n"); + continue; + } else + fprintf(fp, "\n"); + if ((kt->flags & SMP) && (kt->flags & PER_CPU_OFF)) runq = rq_sp->value + kt->__per_cpu_offset[c]; else -- 1.8.5.3