summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-13 00:41:11 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-17 11:39:55 +0200
commitffd4f3c8239b41d3fe9fa14403eb063e02b6a222 (patch)
tree1003831e5d09ed184d7584ec84832a6b7506833c
parent96cec60d956bfb27f135d4e932a1c319cbc878df (diff)
ddb: add `show all tasks' command
* ddb/db_command.c (db_show_all_cmds): Add `tasks'. * ddb/db_print.c (db_show_all_tasks): New function. * ddb/db_print.h (db_show_all_tasks): New prototype.
-rw-r--r--ddb/db_command.c1
-rw-r--r--ddb/db_print.c24
-rw-r--r--ddb/db_print.h6
3 files changed, 31 insertions, 0 deletions
diff --git a/ddb/db_command.c b/ddb/db_command.c
index 8171119..5651667 100644
--- a/ddb/db_command.c
+++ b/ddb/db_command.c
@@ -304,6 +304,7 @@ db_command_list(
}
struct db_command db_show_all_cmds[] = {
+ { "tasks", db_show_all_tasks, 0, 0 },
{ "threads", db_show_all_threads, 0, 0 },
{ "slocks", db_show_all_slocks, 0, 0 },
{ (char *)0 }
diff --git a/ddb/db_print.c b/ddb/db_print.c
index e711ab6..24a3e33 100644
--- a/ddb/db_print.c
+++ b/ddb/db_print.c
@@ -276,6 +276,30 @@ db_print_task(
}
}
+void
+db_show_all_tasks(db_expr_t addr,
+ boolean_t have_addr,
+ db_expr_t count,
+ const char *modif)
+{
+ task_t task;
+ int task_id = 0;
+ processor_set_t pset;
+
+ db_printf(" ID %-*s NAME [THREADS]\n", 2*sizeof(vm_offset_t), "TASK");
+
+ queue_iterate(&all_psets, pset, processor_set_t, all_psets)
+ queue_iterate(&pset->tasks, task, task_t, pset_tasks) {
+ db_printf("%3d %0*X %s [%d]\n",
+ task_id,
+ 2*sizeof(vm_offset_t),
+ task,
+ task->name,
+ task->thread_count);
+ task_id++;
+ }
+}
+
/*ARGSUSED*/
void
db_show_all_threads(addr, have_addr, count, modif)
diff --git a/ddb/db_print.h b/ddb/db_print.h
index dacb47b..87db97b 100644
--- a/ddb/db_print.h
+++ b/ddb/db_print.h
@@ -38,6 +38,12 @@ void db_show_one_thread(
db_expr_t count,
const char * modif);
+void db_show_all_tasks(
+ db_expr_t addr,
+ int have_addr,
+ db_expr_t count,
+ const char * modif);
+
void db_show_all_threads(
db_expr_t addr,
int have_addr,