In the crash utility, the default output of the 'ps' command (as well as
options such as 'ps -k') displays kernel thread command names enclosed
in square brackets (e.g. [kworker/6:1]) to easily distinguish kernel
tasks from user tasks.
However, task listing options that rely on print_task_header() (such as
'ps -l' and 'ps -m') previously displayed kernel task command names
without square brackets (e.g. COMMAND: kworker/6:1).
To maintain consistency across all 'ps' command options, update
print_task_header() to check if a task is a kernel thread via
is_kernel_thread() and enclose its command name in square brackets. Also
update the corresponding help page examples to reflect this formatting.
---
help.c | 42 +++++++++++++++++++++---------------------
task.c | 7 +++++--
2 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/help.c b/help.c
index 6b9e3d8..09cab73 100644
--- a/help.c
+++ b/help.c
@@ -913,18 +913,18 @@ char *help_foreach[] = {
" ...\n",
" Display the state of tasks whose name contains a match to
\"event.*\":\n",
" %s> foreach 'event.*' task -R state",
-" PID: 99 TASK: ffff8804750d5500 CPU: 0 COMMAND: events/0",
+" PID: 99 TASK: ffff8804750d5500 CPU: 0 COMMAND: [events/0]",
" state = 1,",
" ",
-" PID: 100 TASK: ffff8804750d4ac0 CPU: 1 COMMAND: events/1",
+" PID: 100 TASK: ffff8804750d4ac0 CPU: 1 COMMAND: [events/1]",
" state = 1,",
" ",
-" PID: 101 TASK: ffff8804750d4080 CPU: 2 COMMAND: events/2",
+" PID: 101 TASK: ffff8804750d4080 CPU: 2 COMMAND: [events/2]",
" state = 1,",
" ...\n",
" Display the stack traces for all blocked (TASK_UNINTERRUPTIBLE) tasks:\n",
" %s> foreach UN bt",
-" PID: 428 TASK: ffff880036b6c560 CPU: 1 COMMAND: jbd2/dm-1-8",
+" PID: 428 TASK: ffff880036b6c560 CPU: 1 COMMAND: [jbd2/dm-1-8]",
" #0 [ffff880035779a70] __schedule at ffffffff815df272",
" #1 [ffff880035779b08] schedule at ffffffff815dfacf",
" #2 [ffff880035779b18] io_schedule at ffffffff815dfb7f",
@@ -1541,7 +1541,7 @@ char *help_ps[] = {
" ",
" Display the parental hierarchy of the \"%s\" process on a live
system:\n",
" %s> ps -p 4249",
-" PID: 0 TASK: c0252000 CPU: 0 COMMAND: swapper",
+" PID: 0 TASK: c0252000 CPU: 0 COMMAND: [swapper]",
" PID: 1 TASK: c009a000 CPU: 1 COMMAND: init",
" PID: 632 TASK: c73b6000 CPU: 1 COMMAND: prefdm",
" PID: 637 TASK: c5a4a000 CPU: 1 COMMAND: prefdm",
@@ -1639,21 +1639,21 @@ char *help_ps[] = {
" Show all tasks sorted by their task_struct's last_run, timestamp, or",
" sched_entity last_arrival timestamp value, whichever applies:\n",
" %s> ps -l",
-" [20811245123] [IN] PID: 37 TASK: f7153030 CPU: 2 COMMAND: events/2",
+" [20811245123] [IN] PID: 37 TASK: f7153030 CPU: 2 COMMAND:
[events/2]",
" [20811229959] [IN] PID: 1756 TASK: f2a5a570 CPU: 2 COMMAND: ntpd",
" [20800696644] [IN] PID: 1456 TASK: f2b1f030 CPU: 4 COMMAND:
irqbalance",
-" [20617047229] [IN] PID: 2324 TASK: f57f9570 CPU: 5 COMMAND:
flush-253:0",
-" [20617029209] [IN] PID: 49 TASK: f7167030 CPU: 4 COMMAND:
bdi-default",
-" [20438025365] [IN] PID: 345 TASK: f55c7ab0 CPU: 3 COMMAND:
mpt_poll_0",
-" [20103026046] [IN] PID: 728 TASK: f72ba570 CPU: 3 COMMAND:
edac-poller",
-" [20000189409] [IN] PID: 35 TASK: f7153ab0 CPU: 0 COMMAND: events/0",
-" [20000179905] [IN] PID: 48 TASK: f7167570 CPU: 0 COMMAND:
sync_supers",
-" [19997120354] [IN] PID: 36 TASK: f7153570 CPU: 1 COMMAND: events/1",
-" [19991059209] [IN] PID: 38 TASK: f715fab0 CPU: 3 COMMAND: events/3",
-" [19988091608] [IN] PID: 39 TASK: f715f570 CPU: 4 COMMAND: events/4",
-" [19985076530] [IN] PID: 40 TASK: f715f030 CPU: 5 COMMAND: events/5",
-" [19982019106] [IN] PID: 41 TASK: f7161ab0 CPU: 6 COMMAND: events/6",
-" [19982016294] [IN] PID: 29 TASK: f7109ab0 CPU: 6 COMMAND:
ksoftirqd/6",
+" [20617047229] [IN] PID: 2324 TASK: f57f9570 CPU: 5 COMMAND:
[flush-253:0]",
+" [20617029209] [IN] PID: 49 TASK: f7167030 CPU: 4 COMMAND:
[bdi-default]",
+" [20438025365] [IN] PID: 345 TASK: f55c7ab0 CPU: 3 COMMAND:
[mpt_poll_0]",
+" [20103026046] [IN] PID: 728 TASK: f72ba570 CPU: 3 COMMAND:
[edac-poller]",
+" [20000189409] [IN] PID: 35 TASK: f7153ab0 CPU: 0 COMMAND:
[events/0]",
+" [20000179905] [IN] PID: 48 TASK: f7167570 CPU: 0 COMMAND:
[sync_supers]",
+" [19997120354] [IN] PID: 36 TASK: f7153570 CPU: 1 COMMAND:
[events/1]",
+" [19991059209] [IN] PID: 38 TASK: f715fab0 CPU: 3 COMMAND:
[events/3]",
+" [19988091608] [IN] PID: 39 TASK: f715f570 CPU: 4 COMMAND:
[events/4]",
+" [19985076530] [IN] PID: 40 TASK: f715f030 CPU: 5 COMMAND:
[events/5]",
+" [19982019106] [IN] PID: 41 TASK: f7161ab0 CPU: 6 COMMAND:
[events/6]",
+" [19982016294] [IN] PID: 29 TASK: f7109ab0 CPU: 6 COMMAND:
[ksoftirqd/6]",
" [19838402345] [RU] PID: 2331 TASK: f297f570 CPU: 7 COMMAND: bash",
" [19837129436] [IN] PID: 2326 TASK: f2ad5030 CPU: 6 COMMAND: sshd",
" [19289476417] [IN] PID: 1772 TASK: f5665570 CPU: 5 COMMAND: sendmail",
@@ -1667,10 +1667,10 @@ char *help_ps[] = {
" [ 0 00:00:00.009] [IN] PID: 603 TASK: df9bcbc0 CPU: 0 COMMAND: udevd",
" [ 0 00:00:00.010] [IN] PID: 348 TASK: df9ecbc0 CPU: 0 COMMAND: udevd",
" [ 0 00:00:00.013] [IN] PID: 934 TASK: df9171a0 CPU: 0 COMMAND: hald",
-" [ 0 00:00:00.023] [IN] PID: 6 TASK: df443f20 CPU: 0 COMMAND:
events/0",
-" [ 0 00:00:00.029] [IN] PID: 15 TASK: df46b280 CPU: 0 COMMAND:
kblockd/0",
+" [ 0 00:00:00.023] [IN] PID: 6 TASK: df443f20 CPU: 0 COMMAND:
[events/0]",
+" [ 0 00:00:00.029] [IN] PID: 15 TASK: df46b280 CPU: 0 COMMAND:
[kblockd/0]",
" [ 0 00:00:00.101] [IN] PID: 1168 TASK: dee01940 CPU: 0 COMMAND: bash",
-" [ 0 00:00:01.404] [IN] PID: 272 TASK: dfa48ca0 CPU: 0 COMMAND:
flush-8:0",
+" [ 0 00:00:01.404] [IN] PID: 272 TASK: dfa48ca0 CPU: 0 COMMAND:
[flush-8:0]",
" ...",
" ",
" %s> ps -l -C0",
diff --git a/task.c b/task.c
index 5c33c4a..b1b2fde 100644
--- a/task.c
+++ b/task.c
@@ -7808,10 +7808,13 @@ print_task_header(FILE *out, struct task_context *tc, int
newline)
char buf[BUFSIZE];
char buf1[BUFSIZE];
- fprintf(out, "%sPID: %-7ld TASK: %s CPU: %-3s COMMAND: %s\n",
+ fprintf(out, "%sPID: %-7ld TASK: %s CPU: %-3s COMMAND: %s%s%s\n",
newline ? "\n" : "", tc->pid,
mkstring(buf1, VADDR_PRLEN, LJUST|LONG_HEX, MKSTR(tc->task)),
- task_cpu(tc->processor, buf, !VERBOSE), tc->comm);
+ task_cpu(tc->processor, buf, !VERBOSE),
+ is_kernel_thread(tc->task) ? "[" : "",
+ tc->comm,
+ is_kernel_thread(tc->task) ? "]" : "");
}
/*
--
2.55.0