Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
add comments to get_ps().
|
|
|
|
|
|
|
|
LTP uses `top -d 0.1`, which isn't convincingly useful, but general
support for other time units might be useful, and switching to xparsetime
addresses both at once.
Also fix 3169d948c049664bcf7216d4c4ae751881099d3e where I mistakenly
treated `rev` and `toys.optflags&FLAG_b` as interchangeable. (Without
this second fix, `top -b` looks fine but `top` is broken!)
Also fix xparsetime to reject input such as "monkey" or "1monkey".
|
|
|
|
(Otherwise updating pid to parents makes threads read thread parent data.)
|
|
The first contains display fields selectable by the -o argument,
the second contains the /proc/$PID data for one process.
|
|
(Bionic _does_ do the malloc(0)!=0 thing, the problem is pedantic access
checking, not null dereference. So test count instead.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
iotop -H
|
|
out from under us due to asyncronous process exit.
The directory we're traversing vanishing can result in DIRTREE_ABORTVAL
being returned, which we turn into a NUL entry, but then we were trying to
look at that null entry's children. Oops.
|
|
the help infrastructure to handle it.
(The lifetime rules are all wrong for hunks that get reused. Needs a largeish
rewrite.)
|
|
`ps -A | cat` shouldn't have different output depending on the size of
your terminal window.
|
|
exist, which can hit ps when /proc isn't there or /proc/$PID/task isn't
there (because process exited between the time we checked its contents
and the time we looked for its threads).
|
|
(Recent "show + for last char when truncated" change broke that, putting it
back.)
|
|
|
|
to be left justified again.
|
|
|
|
when we can't query terminal size pad to 80 but add -w.
|
|
(It was defaulting to 99999 but not FLAG_w, so it tried to _pad_ to 99999.)
|
|
|
|
(left-justified) fields.
|
|
subtract one _less_ than /dev prefix length or string isn't terminated.
|
|
just for terminal width.
|
|
|
|
I knew that just showing the process name was a divergence from
traditional Android behavior, but I was curious to see whether anyone
cared. Bug reports show that they do. I've not made this conditional on
CFG_TOYBOX_ON_ANDROID on the assumption that this is more useful for
everyone else too. (Why are you asking for per-thread information if
you don't actually want to be able to identify individual threads?)
Why not _just_ show the thread name? Because on Android at least, every
process has lots of identically-named threads; everyone has GC threads,
everyone has JIT threads, and so knowing _just_ the thread name is
rarely useful.
Why show thread name first? Because the kernel limits thread names to 15
bytes plus a NUL, so any left-over space should go to the process name,
so that should come last.
Why call the thread name THREAD? Because "CMD" isn't obviously "thread
name" to folks who don't know how this is implemented behind the scenes.
This change also removes an incorrect "usage:" comment. None of the
other commands in this file duplicated their "usage:" lines, and this
copy wasn't even close to being correct.
Bug: http://b/34610082
|
|
|
|
|
|
This fixes an indirect function call through a pointer of an
incompatible type.
See http://clang.llvm.org/docs/ControlFlowIntegrity.html for more
details.
|
|
It's causing confusion, and it's not obvious that anyone's relying on
it (and even if they are, let's try to find and fix them first).
|
|
|
|
(no /proc/$PID/cmdline so setting was skipped and previous value retained),
which led to memcpy() with an overlapping source/dest range (annoying asan).
Fix: move temp variable and assignment outside the if() statement so we assign
zero if we can''t read the file.
|
|
POSIX says nothing, but traditional ps lets you say "ps 123" in addition
to "ps -p 123". (You can mix and match too: "ps -p 123,124 666 667" works
fine.)
Bug: 31778761
|
|
Android uses NAME rather than CMD by default, but that's not what we
want with -T. Noticed because it broke systrace's reporting of thread
names (see https://developer.android.com/studio/profile/systrace.html).
Bug: 31741954
|
|
This is enough for everything on Android and everything except Java
on my desktop. Even desktop Chrome fits!
|
|
|
|
It should come as no surprise to those who followed the development of
this that it's not well known which of the various names is actually the
thread name. Adding "thread" to the ps --help output seems like a good
idea.
I'm also assuming that "stat2" was meant to read "stat[2]", since that's
how it mostly appeared on the list while discussing this. Still fits in
80 columns.
|
|
|
|
constraints while still trying to get sane behavior. Discard the old CMD,
move COMM to CMD, move the old NAME to COMM, and move TNAME to NAME.
Posix assumes argv[] is the only source of process name data, but Linux has
three sources (/proc/$PID/cmdline, /proc/$PID/exe, /proc/$PID/stat field 2)
and android uses multiple sources simultaneously to identify its processes
and threads.
Toybox ps also assumes that the field names displayed in the headers
can be fed to -o to get that output, which is an assumption posix's
ps spec clearly does not have. Before we were erring on the side of posix,
now we're erring on the side of sanity.
CMD now shows stat[2], all the time. The posix -f behavior change is now
just an ARGS=CMD alias in the -f default command line, which -o overrides.
(Before -f changed the behavior of -o CMD, which is closer to what
posix says but is _insane_ and we've stopped doing it.)
COMM now shows /proc/$PID/exe minus the path. (I'm aware posix says argv[0]
here, but it says argv everywhere.)
NAME is now argv[0] of $PID.
TNAME went away.
Both $COMM and $NAME show the data for $PID, which is a thread's parent
process when $TID != $PID.
|
|
field (that's the ptb/tb switching in get_ps) so it's never blank, so
this doesn't trigger. (Conditionally initializing it would save runtime
memory, but at the expense of more complex code.)
|
|
"NAME" is no longer doing what we want; "TNAME" is what "NAME" used to be,
except that "TNAME" implies -T. This patch switches us over to "TNAME",
disables the implicit -T.
Change-Id: I5553703d3939b24eaf39976162d2f75a591e1ce8
|