5 years agointegrate systemd-login support to ps
Craig Small [Thu, 25 Apr 2013 22:28:18 +0000 (08:28 +1000)]
integrate systemd-login support to ps

Merge commit 'refs/merge-requests/12' of git:// into merge-requests/12

5 years agops: possibility to display seat for a process
Lukas Nykryn [Mon, 22 Apr 2013 11:16:33 +0000 (13:16 +0200)]
ps: possibility to display seat for a process

Library systemd-login offers possibility to display
name of seat for a session on multi-seat systems.

This patch adds output option "sd_seat" which will
show name of seat or "-", when name of seat can not
be determined, but "seat0" should always exist.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agops: possibility to display systemd user unit for a process
Lukas Nykryn [Mon, 22 Apr 2013 10:56:02 +0000 (12:56 +0200)]
ps: possibility to display systemd user unit for a process

Library systemd-login offers possibility to display
name of systemd user unit for specific pid. Note that not all
processes are part of a user unit.

This patch adds output option "sd_uunit" which will
show name of user unit or "-", when process does not belong
to any user unit. This is similar to "sd_unit" but applies
to user units instead of system units.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agops: possibility to display machine name for a process
Lukas Nykryn [Mon, 22 Apr 2013 10:33:31 +0000 (12:33 +0200)]
ps: possibility to display machine name for a process

Library systemd-login offers possibility to display
the name of the VM or container which process belongs to.

This patch adds output option "sd_machine" which will
show machine name or "-" when the name can not be determined.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agops: possibility to display uid of session owner for a process
Lukas Nykryn [Wed, 17 Apr 2013 08:32:50 +0000 (10:32 +0200)]
ps: possibility to display uid of session owner for a process

Library systemd-login offers possibility to display the Unix
user identifier of the owner of the session of a process.
This information will also be displayed for user processes which
are shared between multiple login sessions of the same user,
where sd_session will be blank.

This patch adds output option "sd_ouid" which will show
user UID or "-", when there is no owner for a process.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agops: possibility to display login session for a process
Lukas Nykryn [Tue, 16 Apr 2013 13:58:32 +0000 (15:58 +0200)]
ps: possibility to display login session for a process

Library systemd-login offers possibility to display name
of login session for specific pid.
Note that not all processes are part of a login session
(e.g. system service processes, user processes that are shared
between multiple sessions of the same user, or kernel threads).

This patch adds output option "sd_session" which will
show name of session or "-", when process does not belong
to any session.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agops: possibility to display systemd unit for a process
Lukas Nykryn [Tue, 16 Apr 2013 12:42:30 +0000 (14:42 +0200)]
ps: possibility to display systemd unit for a process

Library systemd-login offers possibility to display
name of a systemd unit file for specific pid. Note that
not all processes are part of a system unit/service
(e.g. user processes, or kernel threads).

This patch adds output option "sd_unit" which will
show name of systemd unit or "-", when process does not
belong to any unit.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

5 years agolibrary: dynamic buffer management even more efficient
Jim Warner [Sun, 14 Apr 2013 05:00:00 +0000 (00:00 -0500)]
library: dynamic buffer management even more efficient

One recent patch to dynamic buffer management involved
over-allocating the buffer increase to lessen calls to
xrealloc. That was successful, but the actual increase
amount did not attempt to optimize size or alignments.

With this commit, we'll copy an approach recently used
by the top program and round up buffer sizes to 1 KiB.
More importantly, while buffers are quickly reaching a
KiB optimum multiple, no memcpy will ever be employed!

To illustrate just how effective top's algorithm would
be, just change the initial and subsequent allocations
from the current 1024 bytes to just a single byte then
add an fprintf.  Those one byte reallocations while on
the way to optimum buffer size will be a one-time cost
and won't represent any recurring performance penalty.

( gosh, that top program *must be* one fart smeller, )
( or was that a smart feller, i can't remember which )

commit 6d605f521c54a7011b7a255762621febda4f67e8
commit a45dace4b82c9cdcda7020ca5665153b1e81275f

Signed-off-by: Jim Warner <>
5 years agotop: snapshot /proc/stat reads to minimize distortions
Jim Warner [Sun, 14 Apr 2013 05:00:00 +0000 (00:00 -0500)]
top: snapshot /proc/stat reads to minimize distortions

Almost forever, top has been accessing the /proc/stat/
directory one line at a time until either smp_num_cpus
was reached or (more recently) Screen_rows is reached.

When NUMA/Nodes support is enabled screen rows will no
longer serve as a limit because all cpus must be read.

With this commit, the entire /proc/stat/ directory can
be read at once so all statistics will be frozen. Thus
individual cpus will no longer keep "ticing" until top
gets around to accessing them via some separate fgets.

The distortion this commit eliminates was quite easily
seen when comparing old/new tops using: individual cpu
stats vs. cpu summary; a healthy delay interval of 3-5
seconds; manually synchronized update cycles (the hard
part); some system loading (maybe another top at -d0).

Additionally, this patch eliminates some long standing
unnecessary initialization made possible because of an
allocation via calloc. If some parts are never touched
by sscanf due to a kernel version, it's unnecessary to
repeatedly re-initialize those portions to zero again.

. numa extensions added
commit 8d989c68c068541a814bf0d2340ac9b0373f24b5
. useless initialization evolution (old to new)
commit e54c8239b1c46cf7b99dd6120c9090303fa969c8
commit 9278134e49b6bf4d6e05c40f63cc6d6d6936e01b
commit fd62123562c2b71f292d3d3ee1a085709048b11a
commit f348575edc915db9df89acfb3f292920726ffe9a

Signed-off-by: Jim Warner <>
5 years agotop: change number of emulated cpus from four to eight
Jim Warner [Sun, 14 Apr 2013 05:00:00 +0000 (00:00 -0500)]
top: change number of emulated cpus from four to eight

With the addition of NUMA/Node support and the ability
to emulate such support even in the absence of libnuma
and numa.h, the maximum number of cpus top can emulate
was increased to make numa emulation more interesting.

( whew, that's an awful lot of "emulates", me thinks )

commit 8d989c68c068541a814bf0d2340ac9b0373f24b5

Signed-off-by: Jim Warner <>
5 years agobuild-sys: in top program, enable NUMA/Node extensions
Jim Warner [Mon, 8 Apr 2013 05:00:00 +0000 (00:00 -0500)]
build-sys: in top program, enable NUMA/Node extensions

This patch provides the build system support for those
top extensions dealing with the NUMA summary displays.

For providing the initial impetus for this enhancement
I wish to thank Lance Shelton <>.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: program code changes, enable NUMA/Node extensions
Lance Shelton [Mon, 8 Apr 2013 07:00:00 +0000 (00:00 -0700)]
top: program code changes, enable NUMA/Node extensions

This commit extends the top Summary Area cpu states to
include information on Non-Uniform Memory Architecture
nodes. It is based upon changes originally proposed by
Lance Shelton who was instrumental in the final patch.

With this change, the user will have new commands that
will provide alternatives to the individual cpu stats:

. '2' toggles between cpu & numa node summary displays
. '3' provides node summary and related cpu statistics

These extensions required some minimal system support.
Typically, the numactl package (and maybe libnuma-dev)
are all that's needed to show a single node which owns
all the processors. Failing that, or for slightly more
variety, top also offers a #define named PRETEND_NUMA.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
Signed-off-by: Lance Shelton <>
5 years agotop: documentation update, enable NUMA/Node extensions
Jim Warner [Mon, 8 Apr 2013 05:00:00 +0000 (00:00 -0500)]
top: documentation update, enable NUMA/Node extensions

This commit provides the NEWS and man document changes
supporting the new NUMA/Node top program enhancements.

For providing the initial impetus for this enhancement
I wish to thank Lance Shelton <>.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
Signed-off-by: Lance Shelton <>
5 years agobuild-sys: in top program, enable NUMA/Node extensions
Jim Warner [Mon, 8 Apr 2013 05:00:00 +0000 (00:00 -0500)]
build-sys: in top program, enable NUMA/Node extensions

This patch provides the build system support for those
top extensions dealing with the NUMA summary displays.

For providing the initial impetus for this enhancement
I wish to thank Lance Shelton <>.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
Signed-off-by: Lance Shelton <>
5 years agoImproved regexp test for pmap
Pierre Labastie [Sun, 7 Apr 2013 08:31:26 +0000 (18:31 +1000)]
Improved regexp test for pmap

The change in pmap is necessary if it happens that the whole output of
pmap -X or -XX has been done before the second regexp is matched. Since
the matching is greedy, it is matched by the full output, so that
nothing is left for the third regexp and the test fails with
FAIL: extra extended output (footer).


Signed-off-by: Craig Small <>
5 years agomiscellaneous: clean up trailing whitespace once again
Jim Warner [Sun, 31 Mar 2013 05:00:00 +0000 (00:00 -0500)]
miscellaneous: clean up trailing whitespace once again

An earlier commit attempted to cleanse our environment
of all useless trailing whitespace. But the effort did
not catch 'empty' lines with a single space before ^J.

This commit hopefully finishes off the earlier effort.
In the meantime, let's pray that contributors' editors
are configured so that such wasted crap is disallowed!

commit fe75e26ab64dab88762230db0797e765507b73ac

Signed-off-by: Jim Warner <>
5 years agoMerge commit 'refs/merge-requests/10' of git:// into merge...
Craig Small [Sun, 7 Apr 2013 07:58:06 +0000 (17:58 +1000)]
Merge commit 'refs/merge-requests/10' of git:// into merge-requests/10

5 years agolibrary: avoid SEGV if file2str should read zero bytes
Jim Warner [Sat, 30 Mar 2013 05:00:00 +0000 (00:00 -0500)]
library: avoid SEGV if file2str should read zero bytes

When utility buffers were introduced for file2str read
requests, a subtle change was inadvertently introduced
such that a read of zero no longer returns a -1 value.

This commit ensures that zero bytes read returns a -1.

And although the solution differs from a merge request
submitted by, a thank you
is offered for revealing this potential abend problem.

commit a45dace4b82c9cdcda7020ca5665153b1e81275f

Signed-off-by: Jim Warner <>
Signed-off-by: Craig Small <>
5 years agolibrary: make dynamic buffer management more efficient
Jim Warner [Fri, 29 Mar 2013 05:00:00 +0000 (00:00 -0500)]
library: make dynamic buffer management more efficient

When dynamic buffers were recently introduced for read
of the status, stat and statm subdirectories one extra
call to read() was required for end-of-file detection.

This patch avoids most all such extra calls to read().

Additionally, the frequency of memory reallocations is
reduced by overallocating each increase more than 25%.

commit a45dace4b82c9cdcda7020ca5665153b1e81275f

Signed-off-by: Jim Warner <>
Signed-off-by: Craig Small <>
5 years agosysctl return value
Craig Small [Sat, 6 Apr 2013 23:30:59 +0000 (09:30 +1000)]
sysctl return value

Gilles brought up a warning message in sysctl.c
sysctl.c: In function 'main':
sysctl.c:767: warning: value computed is not used

The return value of Preload was not being applied correctly to ret
meaning sysctl would not return the correct value.


Signed-off-by: Craig Small <>
5 years agoRevert "Fixed last_value for loops over 99999"
Gilles Espinasse [Tue, 26 Mar 2013 12:22:30 +0000 (13:22 +0100)]
Revert "Fixed last_value for loops over 99999"

This reverts bogus commit 2840d7f4c66a85676c79eeb2c89db4d450fd3fc4.
99 was already added with 7f15f07b3f0d4a9c1e1a39d95f8e784edb65e041

Signed-off-by: Gilles Espinasse <>
5 years agoUpdate library version-info to 2.1.1 v3.3.7
Craig Small [Tue, 26 Mar 2013 10:41:55 +0000 (21:41 +1100)]
Update library version-info to 2.1.1

Internal changes to libproc means the revision number
is incremented. This does not mean an ABI or API change has
occured, we just do the stuff under the covers better or in this
case reduce the compile warnings mainly.

See Jim, I do read the commit messages :)

5 years agoFixed warning about error_at_line
Craig Small [Tue, 26 Mar 2013 10:27:38 +0000 (21:27 +1100)]
Fixed warning about error_at_line

ps/display.c:65:7: warning: implicit declaration of function
‘error_at_line’ [-Wimplicit-function-declaration]

Applied Gentoo patch created by ssuominen


Signed-off-by: Craig Small <>
5 years agoprocps-ng : fix pmap uninitialized warnings
Gilles Espinasse [Tue, 26 Mar 2013 10:21:39 +0000 (11:21 +0100)]
procps-ng : fix pmap uninitialized warnings

pmap.c: In function 'one_proc':
pmap.c:529: warning: 'maxw1' may be used uninitialized in this function
pmap.c:529: warning: 'maxw2' may be used uninitialized in this function
pmap.c:529: warning: 'maxw3' may be used uninitialized in this function
pmap.c:529: warning: 'maxw4' may be used uninitialized in this function
pmap.c:529: warning: 'maxw5' may be used uninitialized in this function

Without -d and -x option, that should be doable to trigger the issue but I haven't found how

Signed-off-by: Gilles Espinasse <>
5 years agoprocps-ng : fix pmap unused variable warnings
Gilles Espinasse [Tue, 26 Mar 2013 09:34:22 +0000 (10:34 +0100)]
procps-ng : fix pmap unused variable warnings

pmap.c: In function 'print_extended_maps':
pmap.c:310: warning: unused variable 'value'
pmap.c: In function 'config_read':
pmap.c:792: warning: unused variable 'section'
pmap.c: In function 'get_default_rc_filename':
pmap.c:969: warning: unused variable 'ret'
pmap.c: In function 'main':
pmap.c:999: warning: unused variable 'default_rc_filename'

Signed-off-by: Gilles Espinasse <>
5 years agoprocps-ng : fix readproc gnu_scanf format warnings
Gilles Espinasse [Tue, 26 Mar 2013 09:16:43 +0000 (10:16 +0100)]
procps-ng : fix readproc gnu_scanf format warnings

readproc.c: In function 'stat2proc' :
readproc.c:516: warning: use of assignment suppression and length modifier together in gnu_scanf format
readproc.c:516: warning: use of assignment suppression and length modifier together in gnu_scanf format

Signed-off-by: Gilles Espinasse <>
5 years agoprocps-ng : fix multi-line comment warnings
Gilles Espinasse [Tue, 26 Mar 2013 08:41:03 +0000 (09:41 +0100)]
procps-ng : fix multi-line comment warnings

slab.c:110:1: warning: multi-line comment
slab.c:115:1: warning: multi-line comment
slab.c:122:1: warning: multi-line comment
slab.c:127:1: warning: multi-line comment

Signed-off-by: Gilles Espinasse <>
5 years agotop: fix the bug affecting certain Find/Locate results
Jim Warner [Mon, 25 Mar 2013 05:00:00 +0000 (00:00 -0500)]
top: fix the bug affecting certain Find/Locate results

When 'Other Filtering' was introduced the idea of what
constituted a displayed row changed. No longer was any
call to task_show assured of consuming one screen row.
Now the determining factor was whether or not the rows
were empty. This worked Ok until a certain Find string
was active then the entire display could be corrupted.

With Find active, the task_show() function alters each
returned row while highlighting each visible match. If
the search was on a single byte value & matched at the
beginning of a row the match got overwritten with '\0'
which then appears empty upon return to window_show().
So that row would not be counted as having been shown.

This was best illustrated with a Find on a single ' '.

This patch will restore proper 'Find/Locate' behavior.

commit 5edc6fb3174f1fd02bbfca61ec6d8a3a2e12f71c

Signed-off-by: Jim Warner <>
5 years agoFixed last_value for loops over 99999
Craig Small [Mon, 25 Mar 2013 10:56:23 +0000 (21:56 +1100)]
Fixed last_value for loops over 99999

For large loops, the value 999,999 was big, but not big enough.


5 years agoConditionally test kill when we compile it
Craig Small [Mon, 25 Mar 2013 10:46:17 +0000 (21:46 +1100)]
Conditionally test kill when we compile it

5 years agolibrary: utility buffers now immune to buffer overflow
Jim Warner [Sat, 23 Mar 2013 05:00:00 +0000 (00:00 -0500)]
library: utility buffers now immune to buffer overflow

A recent Debian bug report, dealing with release 3.2.8
and its even more restrictive buffer sizes (1024) used
in stat, statm and status reads via file2str calls, is
a reminder of what could yet happen to procps-ng. Size
needs are determined by kernel evolution and/or config
options so that bug could resurface even though buffer
size is currently 4 times the old procps-3.2.8 limits.

Those sizes were raised from 1024 to 4096 bytes in the
patch submitted by Eric Dumazet, and referenced below.

This patch makes libprocps immune to future changes in
the amount of stuff that is ultimately found in a proc
'stat', 'statm' or 'status' subdirectory. We now trade
the former static buffer of 4096 bytes for dynamically
allocated buffers whose size can be increased by need.

Even though this change is solely an internal one, and
in no way directly affects the API or the ABI, libtool
suggests that the LIBprocps_REVISION be raised. I hope
Craig remembers to do that just before a next release.

We don't want a repeat of the procps-ng-3.3.4 boo-boo,
but with no API/ABI impact that probably can't happen.

p.s. A big thanks to Jaromir Capik <>
who reviewed my original version and, of course, found
some of my trademark illogic + unnecessary code. After
his coaxing, he helped make this a much better commit.

. procps-3.2.8
. allow large list of groups
commit 7933435584aa1fd75460f4c7715a3d4855d97c1c

Signed-off-by: Jim Warner <>
Reviewed by:   Jaromir Capik <>

5 years agotop: tweak 'Inspect' code for isolated edge situations
Jim Warner [Fri, 22 Mar 2013 05:00:00 +0000 (00:00 -0500)]
top: tweak 'Inspect' code for isolated edge situations

If the 'Inspect' feature was used to view a file which
contained binary (unprintable) data, and when the last
line for such a file was purely unprintable, then that
line length would be overstated by the terminal width.

This was also the occasion where valgrind might object
over potential reference to some unitialized value(s).
It was a harmless situation and somewhat rare to begin
with. Anyway this commit will eliminate the potential.

Additionally, supporting readfile logic was simplified
and the 'status line' bytes read is now more accurate.

Signed-off-by: Jim Warner <>
5 years agotop: touch up a few miscellaneous nls related comments
Jim Warner [Tue, 19 Mar 2013 05:00:00 +0000 (00:00 -0500)]
top: touch up a few miscellaneous nls related comments

Some recent nls work on that pmap program necessitated
a return to nls translation file creation for testing.

As it turns out, my skills used in pseudo-translations
had become rusty and some newer LC_MESSAGE directories
may have been introduced since last needing the topic.

This patch just updates some programmer notes to agree
with this most recent effort and for future reference!

. pmap nls support
commit 0c0c543466e95966851807b54a3830a695cc3032

Signed-off-by: Jim Warner <>
5 years agoconfigure: Check for error.h
Rainer Müller [Wed, 20 Feb 2013 19:14:29 +0000 (20:14 +0100)]
configure: Check for error.h

For portability, check for error.h during configure and define
HAVE_ERROR_H accordingly.

If this header is not available, emulate the functionality of error()
from glibc with an inline wrapper in include/c.h.

5 years agoconfigure: Check for stdio_ext.h
Rainer Müller [Wed, 20 Feb 2013 19:10:40 +0000 (20:10 +0100)]
configure: Check for stdio_ext.h

For portability, check for stdio_ext.h during configure and define
HAVE_STDIO_EXT_H accordingly.

If the current system does not provide this header, use a fallback for
__fpending(). This definition will not work on all systems as it relies
on internal data structures of libc. A more portable solution should be
preferred, for example by using gnulib.

5 years agowatch: Remove unused header
Rainer Müller [Wed, 20 Feb 2013 18:09:54 +0000 (19:09 +0100)]
watch: Remove unused header

No declaration from proc/procps.h is actually used for watch.

5 years agoconfigure: check for program_invocation_name
Rainer Müller [Wed, 20 Feb 2013 17:31:48 +0000 (18:31 +0100)]
configure: check for program_invocation_name

For portabiliy, check for program_invocation_name during configure and
define HAVE_PROGRAM_INVOCATION_NAME accordingly. Use of this symbol is
now enclosed with the appropriate #ifdef block.

The symbol program_invocation_name is only used for error message
handling using error(), so it's safe to omit this if it is not

5 years agoMerge commit 'refs/merge-requests/9' of git:// into merge...
Craig Small [Tue, 19 Mar 2013 10:06:25 +0000 (21:06 +1100)]
Merge commit 'refs/merge-requests/9' of git:// into merge-requests/9

5 years agopmap: Fixing -n,-N x -p,-q check
Jaromir Capik [Tue, 19 Mar 2013 09:47:36 +0000 (10:47 +0100)]
pmap: Fixing -n,-N x -p,-q check

The -p,-q switches are mutually exclusive with -n,-N, but
not between each other. This commit changes the expression
to a correct one.

5 years agopmap: fixing the width measurement of extended_pmap with -q
Jaromir Capik [Mon, 18 Mar 2013 18:43:12 +0000 (19:43 +0100)]
pmap: fixing the width measurement of extended_pmap with -q

This commit fixes the width measurement of the extended pmap
function to work correctly with the -q switch. With no header
and no footer only widths of the particular values matter.

5 years agopmap: a spade is a spade, so let's call a Flags a Perm
Jim Warner [Sat, 16 Mar 2013 05:00:00 +0000 (00:00 -0500)]
pmap: a spade is a spade, so let's call a Flags a Perm

For some reason when the new -X/-XX options were added
what was always displayed as 'Mode' became 'Flags'. So
now a precious horizontal space is wasted because that
field's data has only 4 bytes whereas the header is 5.

Moreover, this created a conflict with the top program
which used that name in a column header already. Plus,
top emitted a 'Translation Hint' that suggests the max
chars should be 8 which is a limit pmap needn't share!

The xgettext program provides no way to keep identical
strings separate. This meant both top and pmap will be
sharing not only the msgid but a Translation Hint too.
So, the solution will now be two distinct field names.

Besides the kernel folks document it as 'perm' anyway!

       new options for pmap
commit faec340719de6db8f64c468cf1dec84ffdd914a3

Signed-off-by: Jim Warner <>
5 years agopmap: wield my machete, achieve width-wise nls support
Jim Warner [Sat, 16 Mar 2013 05:00:00 +0000 (00:00 -0500)]
pmap: wield my machete, achieve width-wise nls support

The existing gettext nls support in pmap exposed users
to some potentially ugly misalignments should the text
that's used in headers someday actually be translated.

The length issue had been addressed already for -X/-XX
modes, but the column headers weren't nls translatable
as yet. This commit makes any header (not literally in
/proc/#/smaps) nls aware. It provides translated width
protection to all modes except one that's header-less!

As part of this effort, the occasional two spaces that
preceeded the Mapping column have been reduced to one.

       new usage & fix coding style
commit d50884788df5a9706ecba6a0966f48ef8f213f41
       improve translations
commit 0022b6ec5dacd20d28e511389916cd6d8ff21091
       add gettext support
commit d59cf08c9dda421114af6d59ef4203d8bb10af3e

Signed-off-by: Jim Warner <>
5 years agopmap: trade inept width approach for printf's built-in
Jim Warner [Sat, 16 Mar 2013 05:00:00 +0000 (00:00 -0500)]
pmap: trade inept width approach for printf's built-in

When the new -X/-XX options were introduced, the width
and justification requirements were satisfied with a 2
step approach. First, format strings would dynamically
be built and then employed in the subsequent printf().

This was a total waste of time and resources since the
printf family of functions provide for the '*' width &
precision conventions to meet this need via arguments.

But even more importantly that foolish endeavor always
hides the potential warnings like the one shown below.

Henceforth this pmap will printf in the proper manner!

       new options for pmap
commit faec340719de6db8f64c468cf1dec84ffdd914a3
pmap.c:459:4: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat]

Signed-off-by: Jim Warner <>
5 years agopmap: formatting only changes, for minimum consistency
Jim Warner [Sat, 16 Mar 2013 05:00:00 +0000 (00:00 -0500)]
pmap: formatting only changes, for minimum consistency

This patch just adjusts miscellaneous indentation etc.
so we can begin the odious task of addressing the pmap
nls needs with at least a consistently formatted base.

Signed-off-by: Jim Warner <>
5 years agopmap: restore a proper response when arguments missing
Jim Warner [Sat, 16 Mar 2013 05:00:00 +0000 (00:00 -0500)]
pmap: restore a proper response when arguments missing

Ever since pmap was refactored via the reference below
(and sprinkled with those damn tabs), the response for
the absence of any argument has been an error message.

This patch restores the proper behavior ('usage' text)
and updates the dejagnu 'no arguments' expect pattern.

commit d50884788df5a9706ecba6a0966f48ef8f213f41

Signed-off-by: Jim Warner <>
5 years agopmap: New switches - RC support (-n/-N,-c/C) & ShowPath (-p)
Jaromir Capik [Mon, 18 Mar 2013 15:05:44 +0000 (16:05 +0100)]
pmap: New switches - RC support (-n/-N,-c/C) & ShowPath (-p)

This commit introduces 4 new switches for the RC support
and 1 more switch for toggling the path printing
in the mapping field. the configuration file can be used
for a selection of columns to be displayed and for toggling
the path printing in the mapping field.

5 years agosupport for listing thread ids (useful with iotop)
Roberto Polli [Mon, 18 Mar 2013 10:58:47 +0000 (11:58 +0100)]
support for listing thread ids (useful with iotop)

5 years agotestsuite: increasing the upper limit of permitted values
Jaromir Capik [Thu, 14 Mar 2013 13:31:03 +0000 (14:31 +0100)]
testsuite: increasing the upper limit of permitted values

This commit increases the upper limit of permitted values
in the expect_table_dsc procedure from 999,999 to 99,999,999.
The previous value was insufficient and causing the slabtop test
to fail on build systems where the number of objects exceeds
one milion.

5 years agomiscellaneous: fixed current misspell-check's findings
Jim Warner [Mon, 11 Mar 2013 06:00:00 +0000 (00:00 -0600)]
miscellaneous: fixed current misspell-check's findings


Signed-off-by: Jim Warner <>
5 years agomiscellaneous: clean up trailing whitespace throughout
Jim Warner [Mon, 11 Mar 2013 06:00:00 +0000 (00:00 -0600)]
miscellaneous: clean up trailing whitespace throughout

The entire tree's polluted with inappropriate trailing
whitespace. This commit rids our environment of all of
those useless keystrokes. Unfortunately, it sure ain't
a permanent solution and requires every contributor to
instruct their editor(s) to prevent or eliminate them.

Plus it's strongly recommended we all insert something
like what's shown below to our '.gitconfig' file so as
to provide at least some warnings when we try to apply
any patches (git am) that do contain the #@!%& things!

~/.gitconfig excerpt ---------------------------------
  whitespace = trailing-space, space-before-tab, blank-at-eof
  whitespace = warn
--------------------------------- ~/.gitconfig excerpt

Signed-off-by: Jim Warner <>
5 years agotop: rename a single Other Filter variable for clarity
Jim Warner [Fri, 8 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: rename a single Other Filter variable for clarity

There is a member of the osel_s structure called 'flg'
that is used to reflect whether a particular filter is
one of inclusion or exclusion (negation). So by golly,
from now on we'll refer to it as 'inc', and not 'flg'!

Signed-off-by: Jim Warner <>
5 years agotop: improve man doc Section 5e, FILTERING in a window
Jim Warner [Fri, 8 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: improve man doc Section 5e, FILTERING in a window

This commit involves very little content change and is
more concerned with better formatting for readability.

Signed-off-by: Jim Warner <>
5 years agotop: correct a sightly obsolete nls 'Translation Hint'
Jim Warner [Fri, 8 Mar 2013 05:00:00 +0000 (00:00 -0500)]
top: correct a sightly obsolete nls 'Translation Hint'

When the command line sort override provisions (-o/-O)
were added, the usage text was modified to keep within
an 80 column terminal but the nls hint didn't keep up.

commit 407d1fc8f2b8e38197a3fe42ba7a644a83416d78

Signed-off-by: Jim Warner <>
5 years agotop: fine tune (ie. fix) 'other filter' negation logic
Jim Warner [Wed, 6 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: fine tune (ie. fix) 'other filter' negation logic

Two too many of these '=' (cooks) spoiled top's broth.

There exists an unintentional variation on the classic
error: off-by-one. When a negation symbol is used with
top's new relational 'other filter' provision, one too
many 'matches' are excluded. This happened because top
covered only 2 of the 3 potential strcmp return codes.
When the strings were equal, they were simply dropped.

So this patch will uninvent that particular variation!

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 2c2c5f5cd2f90c46c778fad6bc2e4105264cf668

Signed-off-by: Jim Warner <>
5 years agotop: introduce relational operators, plus man document
Jim Warner [Tue, 5 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: introduce relational operators, plus man document


Signed-off-by: Jim Warner <>
5 years agotop: introduce relational operators with other filters
Jim Warner [Tue, 5 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: introduce relational operators with other filters

When I originally entertained thoughts of maybe adding
relational operators to the new 'Other Filter' feature
the programming challenges seemed just too great. Yet,
when Jaromir suggests its desirability it now suddenly
becomes a reality. Another of life's little mysteries!

At any rate what was already an extremely powerful new
feature is even better by several orders of magnitude!

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: enable other filtering, add documentation support
Jim Warner [Sun, 3 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: enable other filtering, add documentation support

This commit provides the hard copy support for our new
'Other Filter' feature. The man document contains some
potentially useful examples and it will be interesting
to see what use this new tool is put to in the future.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: enable other filtering via inclusion or exclusion
Jim Warner [Sun, 3 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: enable other filtering via inclusion or exclusion

This change represents the extension of user filtering
based on inclusion or exclusion. However where 'U'/'u'
filtering provides an either/or choice, this extension
offers multiple choices applicable to multiple fields.

The 'inclusion' and 'exclusion' criteria can be freely
combined making a powerful tool to fine tune a display
and avoid clutter associated with uninteresting tasks.

I'm convinced it offers unimagined future flexibility!

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: minor refactor in preparation for other filtering
Jim Warner [Sun, 3 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: minor refactor in preparation for other filtering

While it's only documented (so far) in commit text and
an occasional email I've tried to maintain some coding
standards primarily for reference/navigation purposes.
They also served, I felt, as useful mental challenges.

Someday I will get around to formerly documenting them
but in the meantime here are the ones for this commit:

. functions are grouped into logical (i hope) sections
. functions & sections are ordered to avoid prototypes
. function names are alphabetical within every section

Thus, given those constraints/objectives, and in order
to prepare for an upcoming Other_Filter feature, a few
things had to be renamed and rearranged. Plus a couple
of other (unrelated) tweaks were made for consistency.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 270e8e7eeb66b47569940f537cdad4ab46cd36be,4

Signed-off-by: Jim Warner <>
5 years agotop: finish the job of correcting the response to a ^Z
Jim Warner [Fri, 1 Mar 2013 06:00:00 +0000 (00:00 -0600)]
top: finish the job of correcting the response to a ^Z

if top is suspended while on the 2nd level help screen
the <Enter> key is no longer honored. Thus, users must
use <Esc> to exit help and return to the main display.

Also, line input that was only partially complete when
suspended would still require one additional keystroke
before the read was aborted and the display refreshed.

Lastly, some user interactions might require two input
lines before an operation can be considered completed.
Thus the 2nd line offers another opportunity for users
to suspend top. Resumption would require an extra key.

These issues stem from 2 recent enhancements: preserve
the user context when signaled; complete input editing
with cursor movement keys, insert/overtype modes, etc.

With this patch, the <Enter> key is once again honored
on help screen #2 and partial reads are now completed.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

       bug reported,25
       response to ^Z (partial solution)
commit 5c3fffcf289c89f6a1171f18e33365f909d096d5
       line input editing
commit 477b10c0bd00ed8750c02a9580e606baadb0e6f4
       preserve context with SIGWINCH
commit ba9092ad83d37d9eb91ded49380a9bedeba4bac6

Signed-off-by: Jim Warner <>
5 years agotop: add the field 'USED' to top's existing repertoire
Jim Warner [Thu, 28 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: add the field 'USED' to top's existing repertoire

After revisiting the issue of a new field, combining 2
existing fields (RES and SWAP), I've decided it indeed
makes sense. After all, with the vastly expanded field
capability and the ease of adding new fields, it would
save some precious horizontal screen real estate while
also eliminating some mental/manual user calculations.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
 top/top.1     |   23 ++++++++++++++---------
 top/top.c     |   14 ++++++++++++--
 top/top.h     |    6 ++++++
 top/top_nls.c |    3 +++
 4 files changed, 35 insertions(+), 11 deletions(-)

5 years agotop: consolidate logic dealing with resetting a window
Jim Warner [Wed, 27 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: consolidate logic dealing with resetting a window

This commit just gathers all the logic associated with
resetting/normalizing a single window in one function.

In the future, should the window structure be expanded
to support added functionality, the act of maintaining
it will have been made a little bit easier, hopefully.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: make user's choice for insert/overtype persistent
Jim Warner [Wed, 27 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: make user's choice for insert/overtype persistent

When true line input editing with paste capability was
was re-introduced in the commit below, the concept for
the distinct insert/overtype mode was also introduced.
But such a distinction did not survive an <Enter> key.

With this commit, the cursor state is made persistent.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 477b10c0bd00ed8750c02a9580e606baadb0e6f4

Signed-off-by: Jim Warner <>
5 years agotop: allow no input with the maximum task ('n') prompt
Jim Warner [Wed, 27 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: allow no input with the maximum task ('n') prompt

When both 'kill' and 'renice' commands were changed to
provide a default pid, the 'n' command (maximum tasks)
should have also changed to continue to accept just an
<Enter> key under the get_int function's new protocol.

This patch corrects that behavior, accepting no input.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 39f4067c66141921a9ca2a5170df1fa2151f3182

Signed-off-by: Jim Warner <>
5 years agotop: allow re-ordering of saved line input upon recall
Jim Warner [Fri, 22 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: allow re-ordering of saved line input upon recall

The original implementation of input line recall keeps
strings in the order established when initially added.
With this commit, that has been changed so any matched
string moves to the top of the saved input line stack.

[ well technically not the top since that's occupied ]
[ by an 'empty' string which serves multiple masters ]

Thus, the most frequently referenced strings over time
will percolate up and remain the most easily recalled.
But just in case anybody prefers the strict historical
ordering, a #define can restore the original behavior.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 2efe275512f62f1e25fda96ebc8446b52c6882f0

Signed-off-by: Jim Warner <>
5 years agotop: improve the response to ^Z if awaiting line input
Jim Warner [Fri, 22 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: improve the response to ^Z if awaiting line input

Now that line input offers users full editing freedom,
if top were to be suspended after issuing a prompt for
input, upon resumption an extra keystroke is necessary
to satisfy the outstanding read & refresh the display.

With this patch that extra keystroke is not necessary.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 477b10c0bd00ed8750c02a9580e606baadb0e6f4

Signed-off-by: Jim Warner <>
5 years agotop: some idiot broke 'idle' mode with u/U 'exclusion'
Jim Warner [Thu, 21 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: some idiot broke 'idle' mode with u/U 'exclusion'

This patch fixes the single stinkin' source line which
was responsible for breaking the top idle-mode toggle.

Without this change, either 'u' or 'U' must be invoked
just once before the 'i' command would show something.

(yes, everything's perfectly justified once again but)
(i'm not very happy over the need for this damn patch)

commit d04297843f14e399c699c29b4222b9c9d168c116

Signed-off-by: Jim Warner <>
5 years agoNEWS: top's changes to be included in the next release
Jim Warner [Wed, 20 Feb 2013 06:00:00 +0000 (00:00 -0600)]
NEWS: top's changes to be included in the next release

Signed-off-by: Jim Warner <>
5 years agotop: enable recall of previous input lines for re-edit
Jim Warner [Fri, 15 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: enable recall of previous input lines for re-edit

With this commit, users can now retrieve previous line
input for re-editing and/or re-input using the Up/Down
arrow keys (or their aliases). This mirrors the 'bash'
or 'less' interface and represents a major enhancement
achieved via a somewhat minor impact to our code base.

[ 33 lines of code, 5 closing braces & some comments ]
[ all in 1 function, when TERMIOS_ONLY isn't defined ]

Currently, the upper limit for such recallable strings
has been set at 50 but that could be easily increased.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: enable true line input editing with paste support
Jim Warner [Fri, 15 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: enable true line input editing with paste support

This patch changes the TERMIO_PROXY define back to the
former TERMIOS_ONLY thus changing the top default too.

Plus we can now use true line input editing while also
retaining paste capability. That former native termios
support provided only a limited destructive backspace.

Now we exploit the Left/Right arrow keys, Home/End and
Delete. Plus, the Insert key can toggle overtype mode!

[ The stage is now set for a really huge improvement ]
[ to any user input terminated with the <Enter> key. ]
[ So please stay tuned for the next patch to arrive! ]

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit fa21a6ca819f0f8442849552d0c499e79263ffdb

Signed-off-by: Jim Warner <>
5 years agotop: enable user filtering via inclusion and exclusion
Jim Warner [Wed, 13 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: enable user filtering via inclusion and exclusion

With this commit top can now display users which match
a user id/name or just those users which do not match.

The distinction is based on the presence or absence of
a leading exclamation point '!' (C negation operator).

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: end reliance on strdup not failing & roll our own
Jim Warner [Mon, 11 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: end reliance on strdup not failing & roll our own

Lately, top has begun to rely more and more on dynamic
memory allocations rather than the static buffers that
were found in many of its structures. This was perhaps
most evident in the increasing use of the strdup call.

This commit trades that function call for the internal
equivalent which will protect us from malloc failures.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: man document now properly reflects delay interval
Jim Warner [Sat, 9 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: man document now properly reflects delay interval

This commit corrects one reference to 'decimal place'.

Even though a running top supports a delay interval of
unlimited precision, and a delay interval of thousands
of a second in the rcfile, we intentionally imply that
any delay interval is limited to tenths of a sec only.

Later in the man document, in section 7a, one finds an
admission that a user can set any desired delay value.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: keep cursor hidden after Inspect 'Locate' request
Jim Warner [Thu, 7 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: keep cursor hidden after Inspect 'Locate' request

A recent commit, that was intended to normalize cursor
handling, unintentionally exposed the cursor following
an Inspect 'Locate' request. This change will hide the
cursor once again through inst_view_choice's lifetime.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit f3a87cf634976a6d2a05c5dde19458f7a222e499

Signed-off-by: Jim Warner <>
5 years agotop: the third time was charmed for end-of-job reports
Jim Warner [Tue, 5 Feb 2013 06:00:00 +0000 (00:00 -0600)]
top: the third time was charmed for end-of-job reports

When top was changed to allow some core dumps, the two
potential end-of-job reports were disabled by mistake.
Later, that was corrected so that those reports always
were allowed, if the respective #defines were enabled.

However, if there was an early exit via a command line
option or an error, those reports should not be shown.

This commit may have gotten it right on our third try!

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 1da293bf59187c734acfa89615265ecaf04b3a95
commit d747659ad80ac6e704ce0bc11150d13ab1622f6b

Signed-off-by: Jim Warner <>
5 years agopgrep: Documentation fixes [Wed, 13 Feb 2013 17:36:11 +0000 (23:06 +0530)]
pgrep: Documentation fixes

Minor fixes to the help output and manpage of pgrep.

5 years agopmap: fixing pidlist allocation & disabling vmflags in -X
Jaromir Capik [Thu, 14 Feb 2013 12:55:51 +0000 (13:55 +0100)]
pmap: fixing pidlist allocation & disabling vmflags in -X

This commit fixes allocation of the pid list so that it
is sufficient for storing the list terminator.

Additionally the vmflags printing in the -X mode is disabled
because it's too long. From now the vmflags are displayed
in the -XX mode only.

5 years agopmap - removing the column width constraints in the -X/-XX modes
Jaromir Capik [Thu, 7 Feb 2013 16:56:55 +0000 (17:56 +0100)]
pmap - removing the column width constraints in the -X/-XX modes

This commit changes the width measurement principle in the -X/-XX
modes so that a width of totals is measured instead of the width
of summands. The value of totals is always higher than the value
of summands. That additionally prevents the totals from having
a wrong indentation.

This commit also removes the minimum column width constraints
hardcoded to 7 characters.

5 years agopmap: fixing broken indentation in the -X/-XX modes
Jaromir Capik [Wed, 6 Feb 2013 22:01:54 +0000 (23:01 +0100)]
pmap: fixing broken indentation in the -X/-XX modes

This commit changes the processing principle of the -X/-XX modes
from 1-pass to 2-pass. A separate width measurement stage has been
added, so that the real maximum widths can be measured and used
for correct indentation.

The firstmapping variable now has a new value (2) used for the
width measurement stage (1st pass). The printing is disabled
in this stage. The file position is reset to the beginning
of the file once the end of file is reached and the printing stage
(2nd pass) begins.
It's questionable if this approach is sensitive to Read-after-Write
race conditions. Anyway, this feature is a good candidate for
a complete redesign in the future.

Additionally this commit introduces a final cleaning of the list
used for the evaluation of totals in the -X/-XX modes.

5 years agotop: lift the field management 6 col width restriction
Jim Warner [Thu, 31 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: lift the field management 6 col width restriction

When two somewhat cryptic error messages were recently
changed to more user friendly text, the logic limiting
maximum columns was left unchanged at six. This always
was a rather arbitrary limit but now the revised error
message could actually be misleading (ok, a huge lie).

With a 1 line code change (macro actually), this patch
lifts the internal restriction on maximum columns. Now
the real limit is based on a window's physical x-axis.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 5a27c8095ef015e9c40709ba3186422bdf3fc069,6

Signed-off-by: Jim Warner <>
5 years agotop: disable tty scrollback buffer to improve SIGWINCH
Jim Warner [Thu, 31 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: disable tty scrollback buffer to improve SIGWINCH

A scrollback buffer used in several terminal emulators
could be a real inconvenience to a user following some
resize operations. Extra keystroke(s) would frequently
be required in order to properly render top's display.

After much sleuthing we unearthed two terminfo strings
which have the effect of disabling/restoring that darn
scrollback buffer. They were well hidden under a title
of strings 'to start/end programs using cup'. In turn,
'cup' deals with a tty's cursor addressing capability.

We don't care what you call them or what they refer to
so long as they get the job done. And these really do!
Be advised, however, that there are some side effects,
several of which can even be considered as beneficial:

. enter_ca_mode/smcup/ti disables scrollback buffering
( and that's good, it's what we had always hoped for )

. exit_ca_mode/rmcup/te restores the scrollback buffer
( but also restores screen contents existing pre-top )
( which is different from former program end results )
( where that last rendered screen was left untouched )

. the above screen replacement would impact ^Z suspend
( thus we keep the scrollback buffer disabled during )
( the suspend/resume sequence so that the users will )
( have a visual clue that top is suspended not ended )

If a terminal does not support these terminfo strings,
we will revert to top's former behavior at program end
where we position the cursor at screen bottom and then
output a single newline character. This will prevent a
shell prompt from embedding within top's final screen.

This commit's approach has been tested under a variety
of emulators and window managers, many of which linked
with libvte and others that employed their own scheme.
Examples are: gnome_terminal; kde konsole; lxterminal;
terminator; terminology; urxvt; xfce4-terminal; xterm.

I do now believe that the whole SIGWINCH deal is done!

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agopmap: empty output or crashes on ppc/s390 caused by wrong pidlist type
Jaromir Capik [Mon, 4 Feb 2013 17:21:39 +0000 (18:21 +0100)]
pmap: empty output or crashes on ppc/s390 caused by wrong pidlist type

Previously the pidlist variable was defined as unsigned long *
whilst the openproc function accepts pid_t *.
Both target types differ in size (8 != 4) and therefore the issue
mainly affects big endian architectures.

This commit changes the pidlist type to pid_t * so that it's
compatible with openproc.

5 years agotop: make field management window size error non-fatal
Jim Warner [Tue, 29 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: make field management window size error non-fatal


Signed-off-by: Jim Warner <>
5 years agotop: normalize miscellaneous putp screen manipulations
Jim Warner [Tue, 29 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: normalize miscellaneous putp screen manipulations

This commit standardizes the usage of several terminfo
strings concerned with cursor position and visibility.

Henceforth we will adopt the following informal rules:

. Cap_home vs. Cap_clr_scr is preferred where possible
. Cap_curs_huge will be used with prompts for line i/p
. Cap_curs_huge will be used with help & color mapping
. Cap_curs_hide will be in effect in any other context

We've also added a missing Cap_clr_scr to the 2nd help
screen whenever the SIGWINCH interrupt was recognized.
This prevents a 'duplicated' row from appearing at the
top of the display (when resizing from small to large)
depending on an emulator's scrollback buffer contents.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: a few small adjustments to reduce display flicker
Jim Warner [Tue, 29 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: a few small adjustments to reduce display flicker

This change involves the Fields Management logic only.

With user position being maintained after signals, the
previous algorithm unfortunately used Cap_clr_eos with
each iteration of the loop. The screen flicker invited
with that choice was not apparent under all emulators.

With this commit, clearing to end-of-screen has become
conditional on whether or not there was a true resize.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit ba9092ad83d37d9eb91ded49380a9bedeba4bac6

Signed-off-by: Jim Warner <>
5 years agobuild sys: add configure option for impact of SIGWINCH
Jim Warner [Tue, 29 Jan 2013 06:00:00 +0000 (00:00 -0600)]
build sys: add configure option for impact of SIGWINCH


Signed-off-by: Jim Warner <>
5 years agotop: change default allow/suppress define for SIGWINCH
Jim Warner [Tue, 29 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: change default allow/suppress define for SIGWINCH

No top #define is enabled and that constitutes default
behavior. So whenever a default behavior should change
the define must be changed too if it is to remain off.

This commit simply changes top's default behavior with
respect to allowing/suppressing any potential flood of
SIGWINCH during resize operations, if running under X.

Formerly top would block those signals to reduce costs
of repeated refreshes. That yields a requirement where
the user would have to provide another keystroke for a
final display update. That keystroke may not always be
needed now, but it ultimately depends on some terminal
emulator's scrollback buffer. In any case, the cost of
re-sizing may go up a bit, under most window managers.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

commit 4f33b6b8c56464b4044deb29a3bb0e32622e108f,4,5

Signed-off-by: Jim Warner <>
5 years agopmap vmflags support
Craig Small [Thu, 24 Jan 2013 11:39:42 +0000 (22:39 +1100)]
pmap vmflags support

Some new kernel version added a line in /proc/pid/smaps listing a processes vmflags. This broke pmap such that pmap -X and pmap -XX would always fail.

This patch adds support for the vmflags field so that -X and -XX work again AND they display the flags.

Merge commit 'refs/merge-requests/8' of git:// into merge-requests/8

5 years agopmap -x has RSS and Dirty summary
Andrey Bondarenko [Thu, 24 Jan 2013 11:26:27 +0000 (22:26 +1100)]
pmap -x has RSS and Dirty summary

This is largely Andrey's patch based upon merge request #7
If KLONG != 8 the summary didn't print for RRS and Dirty, this commit
restores this behavour for both sizes.


Signed-off-by: Craig Small <>
5 years agoMerge commit 'refs/merge-requests/6' of git:// into merge...
Craig Small [Thu, 24 Jan 2013 10:51:13 +0000 (21:51 +1100)]
Merge commit 'refs/merge-requests/6' of git:// into merge-requests/6

5 years agops.1: fix --group description
Andreas Bießmann [Wed, 23 Jan 2013 11:45:59 +0000 (12:45 +0100)]
ps.1: fix --group description

The --group switch tells about parameter 'grplist' but detailed description
names it 'grouplist'.
This patch changes 'grouplist' to 'grplist'.

Signed-off-by: Andreas Bießmann <>
Signed-off-by: Craig Small <>
5 years agotop: update man document for current screen & SIGWINCH
Jim Warner [Wed, 16 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: update man document for current screen & SIGWINCH

Signed-off-by: Jim Warner <>
5 years agotop: offer define to allow/suppress excessive SIGWINCH
Jim Warner [Wed, 16 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: offer define to allow/suppress excessive SIGWINCH

After carefully working our way to the point where the
excessive SIGWINCH interrupts are now throttled, along
comes a commit which reverses all those prior efforts.

Actually it doesn't. It simply allows one to choose if
all those efforts should be reversed or remain active.

Why in the world would you even want to consider that?

Quite simply, to opt for responsiveness over overhead.
Oh, and depending on the terminal emulator used for X,
by enabling this OFF_SIGWINCH #define you will be able
to avoid the need for an extra keystroke after resize.

Besides it was an interesting programming challenge to
see just how few lines of code would be needed to make
it possible. Bottom line? Only 1 source line required!
(actually 0 lines, since the define disables one line)

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: immunize against window manager flood of SIGWINCH
Jim Warner [Wed, 16 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: immunize against window manager flood of SIGWINCH

Whew, it was nip-and-tuck there for awhile but finally
we solved the SIGWINCH overload problem one finds with
most X window managers. Now if a window manager should
try to inundate ol' top with repeated SIGWINCH signals
they won't even be received so can't impact us at all.

And we achieve this miracle having never even issued a
sigprocmask, so all the top code executes with signals
totally unblocked. Intuition suggests it probably rubs
even more salt in the wound, but au contraire mon ami!

The key to our success was simply trading the 'select'
call for its cousin 'pselect'. Not only does that call
provide nanosecond granularity (vs. the former's usec)
but it takes a sigset_t parm which can then atomically
block the troublesome SIGWINCH guy until user input or
optional timeout. Net result? No more signal overload!

Now, if only we could just coax all terminal emulators
into one identical standard buffering scheme plus find
some way to emulate the most recent SIGWINCH, it would
be perfect. We would then obviate the user requirement
of typing yet 1 more key before seeing proper results.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: refactor all the low-level i/o logic for SIGWINCH
Jim Warner [Wed, 16 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: refactor all the low-level i/o logic for SIGWINCH

This commit primarily involves renaming functions plus
reorganizing logic in preparation for the next changes
which will hopefully yield the 'final solution' to the
excessive SIGWINCH signals under most window managers.

In this specific patch, the most significant change is
the introduction of a new 'ioa' function (io avail) to
focus all logic dealing with unsolicited user keyboard
input and exposed to signals and/or optional timeouts.

That new function is where our signal overload will be
ultimately defeated, if it is at all humanly possible.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: preserve current screen when receiving a SIGWINCH
Jim Warner [Wed, 16 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: preserve current screen when receiving a SIGWINCH

Prior to this commit, top has always taken the easiest
(safest?) approach when dealing with those troublesome
SIGWINCH interrupts. Whenever the user was on a screen
other than the main display, any signal received would
force an immediate exit, returning to the main screen.

With these changes, top will retain the user's current
position regardless of what screen he/she was viewing.

In support the following additional changes were made:
* the initial help screen requires an explicit end key
` not 'any other key' formerly used to request an exit
* the colors mapping screen instructions were improved
* ^Z response was made immediate, eliminating the flag
* the sigaction's SA_RESTART flag had to be eliminated
* sigprocmask logic was normailize to the bare minimum
* the POSIX.1-2004 async-signal safe functions used in
` the signal handlers were acknowledged and documented

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: even more miscellaneous accumulated modifications
Jim Warner [Fri, 11 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: even more miscellaneous accumulated modifications

This commit just addresses the following minor issues:

. eliminate the leading tab character upon error exits
. standardized single key input as 'keyin', not 'chin'
. symbolic keys changed to guarantee no negative value
. placed most 'case' statement labels on a unique line
. standardized lvalue/rvalue convention in while loops
. fixed prototype declaration in the 'debug_END' macro

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: circumvent an ncurses version 5.9.20121017 glitch
Jim Warner [Mon, 7 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: circumvent an ncurses version 5.9.20121017 glitch

Some testing under a new distro revealed what appeared
to be a broken top Inspect request. When the selection
was made, the resulting output was scrambled/scrunched
at the bottom of the screen (as if ^J's were missing).

This anomaly surfaced under Fedora-18 which happens to
use the above ncurses version. The bug was not present
in version 5.9.20120714 (available with openSUSE 12.2)
or the more widely available version of: 5.9.20110404.

It has now been confirmed that this problem originated
in version 5.9.20120825. It was then that buffering of
output was changed from stdio to some internal ncurses
scheme so as to avoid problems with its SIGTSTP logic.

Thanks to a very prompt response from Thomas E. Dickey
we also learned that contrary to the documentation the
putp logic does not call putchar internally. Thus, the
single putchar that Inspect was employing was actually
mixing 2 different buffering schemes: ncurses & stdio.

Thus, from now on we'll use putp() exclusively and try
to achieve single char output as efficiently as we can
while meeting that putp() string argument requirement.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)


Signed-off-by: Jim Warner <>
5 years agotop: prevent display corruption in Locate highlighting
Jim Warner [Fri, 4 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: prevent display corruption in Locate highlighting

There existed a small chance that the display could be
corrupted when a search string was found within a row.
For that to happen, conditions like these were needed:

. a very short Locate string was active in some window
. the string matched part of a terminfo <esc> sequence
. that sequence was used in highlighting running tasks
. the 'x' toggle was active (sort column highlighting)

One solution to this potential problem was to manually
turn off sort column highlighting before using Locate.
But rather than rely on a user remedy, we'll automate.

Since other top provisions were already being enforced
when Locate was in use (off 'i' and/or 'u'/'U'), we'll
now also force column highlighting off when the search
string in a given window is not empty. However, unlike
idle tasks and user filtering, when that search string
*is* emptied, we restore highlighting for that window.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>
5 years agotop: accumulated miscellaneous code and comment tweaks
Jim Warner [Wed, 2 Jan 2013 06:00:00 +0000 (00:00 -0600)]
top: accumulated miscellaneous code and comment tweaks

This commit just addresses the following minor issues:

. restored both lost end-of-job reporting capabilities
. added missing initializers to the DEF_RCFILE #define
. added 'nls_maybe' eye-catcher to the 'Scaled_sfxtab'
. removed a now superfluous 'READMINSZ' assertion test
. man document references to 'top' are more consistent

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <>