----- Original Message -----
----- Original Message -----
> Hello Dave,
>
> Please refer to the attachment. I think the string of state is not
> correct.
>
> --
> --
> Regards
> Qiao Nuohan
>
>
> --- a/task.c
> +++ b/task.c
> @@ -4633,7 +4633,7 @@ task_state_string(ulong task, char *buf,
> int verbose)
>
> if (valid_task_state(_TRACING_STOPPED_) &&
> (state & _TRACING_STOPPED_)) {
> - sprintf(buf, "ST");
> + sprintf(buf, "TS");
> valid++;
> set++;
> }
~
Actually it is shown as "ST" on purpose, because it goes back to
older kernels where there was no separate "traced" state, and both
"stopped" and "traced" states were essentially the same. The flag
bits keep changing over time, but the original list of states shown
by "ps" has always been:
crash> help ps
...
5. the task state (RU, IN, UN, ZO, ST, DE, SW).
...
However I agree with you that for clarity's sake the traced state should
be differentiated. But I think it would be better to change it to "TR"
instead of your "TS" suggestion -- note that the verbose translation
used by the "set" command shows "TASK_TRACED":
if (state & _TRACING_STOPPED_)
sprintf(&buf[strlen(buf)], "%sTASK_TRACED",
count++ ? "|" : "");
I'll update the "ps" help page with the new "TR" identifier.
Thanks,
Dave
And related to the above, I'll also update the "foreach" command's state
qualifier to accept a "TR" option. As it is now, there's no way to
filter out traced tasks.
Dave