Hi Aaron. Cool! Queued for crash-7.2.2: https://github.com/crash-utility/crash/commit/6de5d2c034a8977e5b2be8ae1b48c4b6754a2684 Thanks, Dave ----- Original Message ----- > Show only details for the active task on each cpu: > > PID PPID CPU TASK ST %MEM VSZ RSS COMM > > 79992 1 3 ffff882456ef6ab0 RU 0.0 42194276 32620 oracle > > 80471 1 0 ffff886b080e0ab0 RU 0.0 42194276 36912 oracle > > 86772 85179 2 ffff8811a8650040 RU 0.0 4072 588 fstab_import > > 88643 1 1 ffff88069366a040 RU 0.0 42231192 55628 oracle > > The -A flag is mutually-exclusive in addition to: -a, -t, -c, -p, -g, > -l, -m, -S and -r. > > Signed-off-by: Aaron Tomlin <atomlin@xxxxxxxxxx> > --- > defs.h | 3 ++- > help.c | 11 ++++++++++- > task.c | 14 +++++++++++--- > 3 files changed, 23 insertions(+), 5 deletions(-) > > diff --git a/defs.h b/defs.h > index 4d2fb2f..76827dc 100644 > --- a/defs.h > +++ b/defs.h > @@ -4625,8 +4625,9 @@ extern long _ZOMBIE_; > #define PS_MSECS (0x20000) > #define PS_SUMMARY (0x40000) > #define PS_POLICY (0x80000) > +#define PS_ACTIVE (0x100000) > > -#define PS_EXCLUSIVE > (PS_TGID_LIST|PS_ARGV_ENVP|PS_TIMES|PS_CHILD_LIST|PS_PPID_LIST|PS_LAST_RUN|PS_RLIMIT|PS_MSECS|PS_SUMMARY) > +#define PS_EXCLUSIVE > (PS_TGID_LIST|PS_ARGV_ENVP|PS_TIMES|PS_CHILD_LIST|PS_PPID_LIST|PS_LAST_RUN|PS_RLIMIT|PS_MSECS|PS_SUMMARY|PS_ACTIVE) > > #define MAX_PS_ARGS (100) /* maximum command-line specific requests */ > > diff --git a/help.c b/help.c > index 5b04b09..760fcb0 100644 > --- a/help.c > +++ b/help.c > @@ -1251,7 +1251,7 @@ NULL > char *help_ps[] = { > "ps", > "display process status information", > -"[-k|-u|-G|-y policy] [-s] [-p|-c|-t|-[l|m][-C cpu]|-a|-g|-r|-S]\n [pid > | task | command] ...", > +"[-k|-u|-G|-y policy] [-s] [-p|-c|-t|-[l|m][-C cpu]|-a|-g|-r|-S|-A]\n > [pid | task | command] ...", > " This command displays process status for selected, or all, processes" , > " in the system. If no arguments are entered, the process data is", > " is displayed for all processes. Specific processes may be selected", > @@ -1329,6 +1329,7 @@ char *help_ps[] = { > " -g display tasks by thread group, of selected, or all, tasks.", > " -r display resource limits (rlimits) of selected, or all, tasks.", > " -S display a summary consisting of the number of tasks in a task > state.", > +" -A display only the active task, on each cpu.", > "\nEXAMPLES", > " Show the process status of all current tasks:\n", > " %s> ps", > @@ -1483,6 +1484,14 @@ char *help_ps[] = { > " UN: 31", > " ZO: 1", > " ", > +" Display only the active task, on each cpu:\n", > +" %s> ps -A", > +" PID PPID CPU TASK ST %MEM VSZ RSS COMM", > +" > 10 2 1 ffff880212969710 IN 0.0 0 0 > [migration/1]", > +" > 0 0 3 ffff884026d43520 RU 0.0 0 0 > [swapper]", > +" > 6582 1 2 ffff880f49c52040 RU 0.0 42202472 33368 > oracle", > +" > 9497 1 0 ffff880549ec2ab0 RU 0.0 42314692 138664 > oracle", > +" ", > " 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", > diff --git a/task.c b/task.c > index db05ab4..be3b4f0 100644 > --- a/task.c > +++ b/task.c > @@ -3240,7 +3240,7 @@ parse_task_thread(int argcnt, char *arglist[], struct > task_context *tc) { > } > > static char *ps_exclusive = > - "-a, -t, -c, -p, -g, -l, -m, -S and -r flags are all > mutually-exclusive\n"; > + "-a, -t, -c, -p, -g, -l, -m, -S, -r and -A flags are all > mutually-exclusive\n"; > > static void > check_ps_exclusive(ulong flag, ulong thisflag) > @@ -3267,7 +3267,7 @@ cmd_ps(void) > cpuspec = NULL; > flag = 0; > > - while ((c = getopt(argcnt, args, "SgstcpkuGlmarC:y:")) != EOF) { > + while ((c = getopt(argcnt, args, "ASgstcpkuGlmarC:y:")) != EOF) { > switch(c) > { > case 'k': > @@ -3372,6 +3372,10 @@ cmd_ps(void) > flag |= PS_POLICY; > psinfo.policy = make_sched_policy(optarg); > break; > + case 'A': > + check_ps_exclusive(flag, PS_ACTIVE); > + flag |= PS_ACTIVE; > + break; > > default: > argerrs++; > @@ -3576,6 +3580,10 @@ show_ps_data(ulong flag, struct task_context *tc, > struct psinfo *psi) > > task_active = is_task_active(tc->task); > > + if ((flag & PS_ACTIVE) && (flag & PS_SHOW_ALL) && > + !task_active) > + return; > + > if (task_active) { > if (hide_offline_cpu(tc->processor)) > fprintf(fp, "- "); > @@ -3610,7 +3618,7 @@ show_ps(ulong flag, struct psinfo *psi) > int print; > char buf[BUFSIZE]; > > - if (!(flag & (PS_EXCLUSIVE|PS_NO_HEADER))) > + if (!(flag & ((PS_EXCLUSIVE & ~PS_ACTIVE)|PS_NO_HEADER))) > fprintf(fp, > " PID PPID CPU %s ST %%MEM VSZ RSS COMM\n", > flag & PS_KSTACKP ? > -- > 2.14.3 > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility