>From 05131abe6122763c08cab42afe80043ab5d00006 Mon Sep 17 00:00:00 2001 From: Zhang Yanfei Date: Wed, 14 Nov 2012 15:23:47 +0800 Subject: [PATCH] make rt_rq displayed non-hierarchically Signed-off-by: Zhang Yanfei --- task.c | 35 ++++++++++++++++------------------- 1 files changed, 16 insertions(+), 19 deletions(-) diff --git a/task.c b/task.c index 771f604..bdb5f66 100755 --- a/task.c +++ b/task.c @@ -76,7 +76,7 @@ static void dump_CFS_runqueues(void); static void print_group_header_rt(ulong, void *); static void print_parent_task_group_rt(void *, int); static int dump_tasks_in_lower_dequeued_rt_rq(int, ulong, int); -static void dump_RT_prio_array(int, ulong, char *); +static int dump_RT_prio_array(ulong, char *); static void dump_tasks_in_task_group_rt_rq(int, ulong, int); static char *get_task_group_name(ulong); static void sort_task_group_info_array(void); @@ -7885,7 +7885,7 @@ static void dump_CFS_runqueues(void) { int cpu, tot; - ulong runq, cfs_rq; + ulong runq, cfs_rq, prio_array; char *runqbuf, *cfs_rq_buf; ulong tasks_timeline ATTRIBUTE_UNUSED; struct task_context *tc; @@ -7943,8 +7943,15 @@ dump_CFS_runqueues(void) OFFSET(cfs_rq_tasks_timeline)); } - dump_RT_prio_array(0, runq + OFFSET(rq_rt) + OFFSET(rt_rq_active), + prio_array = runq + OFFSET(rq_rt) + OFFSET(rt_rq_active); + fprintf(fp, " RT PRIO_ARRAY: %lx\n", prio_array); + + tot = dump_RT_prio_array(prio_array, &runqbuf[OFFSET(rq_rt) + OFFSET(rt_rq_active)]); + if (!tot) { + INDENT(5); + fprintf(fp, "[no tasks queued]\n"); + } fprintf(fp, " CFS RB_ROOT: %lx\n", (ulong)root); @@ -8063,8 +8070,8 @@ dump_tasks_in_lower_dequeued_rt_rq(int depth, ulong rt_rq, int cpu) return tot; } -static void -dump_RT_prio_array(int depth, ulong k_prio_array, char *u_prio_array) +static int +dump_RT_prio_array(ulong k_prio_array, char *u_prio_array) { int i, c, tot, cnt, qheads; ulong offset, kvaddr, uvaddr; @@ -8075,9 +8082,6 @@ dump_RT_prio_array(int depth, ulong k_prio_array, char *u_prio_array) ulong my_q, task_addr; char *rt_rq_buf; - if (!depth) - fprintf(fp, " RT PRIO_ARRAY: %lx\n", k_prio_array); - qheads = (i = ARRAY_LENGTH(rt_prio_array_queue)) ? i : get_array_length("rt_prio_array.queue", NULL, SIZE(list_head)); @@ -8121,14 +8125,10 @@ dump_RT_prio_array(int depth, ulong k_prio_array, char *u_prio_array) SIZE(rt_rq), "rt_rq", FAULT_ON_ERROR); - INDENT(5 + 6 * depth); - fprintf(fp, "[%3d] ", i); - fprintf(fp, "GROUP RT PRIO_ARRAY: %lx\n", - my_q + OFFSET(rt_rq_active)); - tot++; - dump_RT_prio_array(depth + 1, + tot += dump_RT_prio_array( my_q + OFFSET(rt_rq_active), &rt_rq_buf[OFFSET(rt_rq_active)]); + FREEBUF(rt_rq_buf); continue; } else task_addr -= OFFSET(task_struct_rt); @@ -8136,7 +8136,7 @@ dump_RT_prio_array(int depth, ulong k_prio_array, char *u_prio_array) if (!(tc = task_to_context(task_addr))) continue; - INDENT(5 + 6 * depth); + INDENT(5); fprintf(fp, "[%3d] ", i); fprintf(fp, "PID: %-5ld TASK: %lx COMMAND: \"%s\"\n", tc->pid, tc->task, tc->comm); @@ -8145,10 +8145,7 @@ dump_RT_prio_array(int depth, ulong k_prio_array, char *u_prio_array) FREEBUF(tlist); } - if (!tot) { - INDENT(5 + 9 * depth); - fprintf(fp, "[no tasks queued]\n"); - } + return tot; } static void -- 1.7.1