]> granicus.if.org Git - procps-ng/log
procps-ng
13 months agotop: avoid '%Cpu' distortion resulting from keystrokes master
Jim Warner [Thu, 9 Mar 2023 06:00:00 +0000 (00:00 -0600)]
top: avoid '%Cpu' distortion resulting from keystrokes

Like a line from the movie Cool Hand Luke: "what we've
got here is failure to communicate"; well that was me!

Finally, I got a handle on the issue referenced below.

At first, it seemed inappropriate to try comparing cpu
percentages as reported by different top versions. And
even more so when they are invoked many seconds apart.

As it turns out, this issue had nothing to do with the
specific processor. Nor did it involve two versions of
top running simultaneously using the same delay value.
Rather, it concerns keyboard input and several changes
which were made last year in commits referenced below.

They were prompted by development of the 'Ctrl' bottom
window feature. Initially, if transitioning from a big
window to a small window portions of the former window
remained visible until the next refresh. A solution to
that led to a flaw when resizing top. Fixing that then
created a race condition with full screen replacement.

The net effect of all those changes was to distort the
cpu percentage value for the processor on which top is
dispatched to service user input. It arose because the
new frame was begun immediately, yielding few 'ticks'.

[ when fewer ticks are accumulated the potential for ]
[ distortion increases. As an example, hold some key ]
[ then watch cpu percentages (works best in graphs). ]

[ while any version of top will show distortions for ]
[ the above experiment, a v4.0.0 top will be greater ]
[ and %cpu is distorted even for a single keystroke. ]

So, to restore proper 3.3.17 keystroke behavior, we'll
revert parts of the first 3 commits shown below. Plus,
the 4th commit will be entirely reversed as redundant.

Reference(s):
https://gitlab.com/procps-ng/procps/-/issues/274

. Sep, 2022 - avoid potential 'BREAK_screen' race
commit 3e5016c2898d7129d2cdae7b1def8fe85d41619f
. Sep, 2022 - fix improper sigwinch behavior
commit 9d9993708b1854f7396b978a6d54d6c508e1fd08
. May, 2022 - made more responsive to kdb input
commit 3ea1bc779fb7ca5bf065a5ca620ec5b5823bc61c
. turn bottom window off with additional key
commit 3f068a66c84347a42fd27d8a809cea2656043b37

Signed-off-by: Jim Warner <james.warner@comcast.net>
14 months agotop: ensure an EXIT_FAILURE with bad command line args
Jim Warner [Thu, 2 Mar 2023 06:00:00 +0000 (00:00 -0600)]
top: ensure an EXIT_FAILURE with bad command line args

When getopt usage was added (plus long options) in the
patch shown below, top no longer returned EXIT_FAILURE
when the error message was generated by getopt itself.

This commit will restore the proper behavior no matter
who might issue a command line argument error message.

Thanks to Bastian Bittorf for discovering this buglet.

Reference(s):
https://gitlab.com/procps-ng/procps/-/issues/273
. sep, 2021 - getopt with long form args
commit c91b371485b7ffaea3a7c669b080328d141dfb6b

Signed-off-by: Jim Warner <james.warner@comcast.net>
14 months agow: make sure null terminated ut_* strings are used
Thorsten Kukuk [Tue, 7 Mar 2023 10:42:20 +0000 (11:42 +0100)]
w: make sure null terminated ut_* strings are used

strncpy does not null terminate a string if it has the maximal length.
Use always the null terminated variants for ut_user and ut_line.

Signed-off-by: Thorsten Kukuk <kukuk@suse.com>
14 months agolibrary: become more tolerant of /proc/cpuinfo formats
Jim Warner [Wed, 1 Mar 2023 06:00:00 +0000 (00:00 -0600)]
library: become more tolerant of /proc/cpuinfo formats

In the issue referenced below, it is now apparent that
not all architectures follow a logical/expected format
for the /proc/cpuinfo file. Specifically, the expected
empty line after each processor entry might be missing
under some architectures for the last processor shown.

[ and a belated review of kernel source confirms it. ]

So this commit makes our stat module a little bit more
tolerant of some potential missing newline characters.

[ along the way, it's also now tolerant of a missing ]
[ cpuinfo file plus more efficient whenever a cpu is ]
[ is not linked to a core or toggled offline/online. ]

Reference(s):
https://gitlab.com/procps-ng/procps/-/issues/272
procps-ng/procps#272

Signed-off-by: Jim Warner <james.warner@comcast.net>
14 months agopgrep: Use only --signal option for signal
Craig Small [Wed, 1 Mar 2023 06:35:14 +0000 (17:35 +1100)]
pgrep: Use only --signal option for signal

When pgrep was used to match on signal, it makes sense to use
the same signal parsing code as pkill. Unfortunately the
"find the signal" part is a little too enthusaistic about what a
signal is, meaning

pgrep -u -42

fails because the signal becomes "42" and then there is no UID.

This is a bit sad for pkill but has been that way for a long
time. For pgrep this is new so now only the long form
pgrep --signal <X>
will work.

In addition, when using --signal if pgrep/pkill couldn't work
out what the signal was it just silently ignored it. It now
complains and aborts.

References:
 https://bugs.debian.org/1031765
 commit 866abacf8805a74fb7c59cae1f64963e0a540b14

14 months agotests: Dont compare floats with ==
Craig Small [Wed, 1 Mar 2023 06:20:42 +0000 (17:20 +1100)]
tests: Dont compare floats with ==

Comparing floats with == is bad and I should feel bad I did this.
The problem is if something is close to, but not quite the exact
same fails tests.

I have used an epsilon of 1 because we don't care about accuracy,
just that the function works well enough.

References:
 issue procps-ng/procps#271
 https://how-to.fandom.com/wiki/Howto_compare_floating_point_numbers_in_the_C_programming_language

Signed-off-by: Craig Small <csmall@dropbear.xyz>
14 months agoNEWS: Release 4.0.3 v4.0.3
Craig Small [Wed, 15 Feb 2023 20:26:15 +0000 (07:26 +1100)]
NEWS: Release 4.0.3

14 months agotestsuite:free: total committed memory can be negative (if overcommitted)
Lukas Märdian [Wed, 15 Feb 2023 10:02:55 +0000 (11:02 +0100)]
testsuite:free: total committed memory can be negative (if overcommitted)

E.g. on my system I see this output to "free -vh", which fails the test:
               total        used        free      shared  buff/cache   available
Mem:            23Gi        17Gi       311Mi       2.2Gi       8.1Gi       5.8Gi
Swap:          2.0Gi       1.9Gi       105Mi
Comm:           13Gi        44Gi       -31Gi

14 months agomisc: tweak the recent copyright changes just a little
Jim Warner [Wed, 8 Feb 2023 06:00:00 +0000 (00:00 -0600)]
misc: tweak the recent copyright changes just a little

This commit just tweaks some recent copyright changes.

Foe example, the six public header files are unique to
this new library and thus are just attributed to Craig
and me. Plus, there were some misnamed file references
as '.c' for '.h' or 'libprocps' instead of 'libproc2'.

Signed-off-by: Jim Warner <james.warner@comcast.net>
14 months agonls: Updated the translations from TP website
Craig Small [Wed, 8 Feb 2023 07:39:28 +0000 (18:39 +1100)]
nls: Updated the translations from TP website

Fixed the Swedish man-po file too

Signed-off-by: Craig Small <csmall@dropbear.xyz>
14 months agomisc: Update copyright of remaining man pages
Craig Small [Wed, 8 Feb 2023 07:28:55 +0000 (18:28 +1100)]
misc: Update copyright of remaining man pages

Giving them all a standard format and using either the existing
header or the git logs to put the relevant authors in.

14 months agomisc: Update the copyrights for the ps and top sources
Jim Warner [Tue, 7 Feb 2023 06:00:00 +0000 (00:00 -0600)]
misc: Update the copyrights for the ps and top sources

This patch just follows Craig's lead for the remaining
ps and top program files and associated man documents.

Signed-off-by: Jim Warner <james.warner@comcast.net>
14 months agomisc: Update the copyrights of files
Craig Small [Tue, 7 Feb 2023 10:09:48 +0000 (21:09 +1100)]
misc: Update the copyrights of files

The copyrights of the source files were all out of date and were not
the same format. This has been corrected. The source of the authors
was examining the git log for each file.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agonls: Update translations v4.0.3_rc1
Craig Small [Sat, 28 Jan 2023 01:59:10 +0000 (12:59 +1100)]
nls: Update translations

15 months agotestsuite: Remove trailing whitespace
Craig Small [Wed, 25 Jan 2023 09:35:43 +0000 (20:35 +1100)]
testsuite: Remove trailing whitespace

15 months agopgrep: make --terminal respect other criteria
Jason Cox [Wed, 25 Jan 2023 09:34:21 +0000 (20:34 +1100)]
pgrep: make --terminal respect other criteria

In some cases the --terminal option to pgrep will cause all processes
matching the terminal to be output, even if other criteria would exclude them.
Specifically, I noticed that it overrides the --runstates option.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agotop: make all man document apostrophe usage consistent
Jim Warner [Mon, 23 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: make all man document apostrophe usage consistent

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agotop: squeeze namespace provision (^P) onto help screen
Jim Warner [Mon, 23 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: squeeze namespace provision (^P) onto help screen

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agotop: restore tab highlight for ^L and ^P bottom window
Jim Warner [Mon, 23 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: restore tab highlight for ^L and ^P bottom window

With the commit shown below a BOT_PRESENT constant was
introduced. Unfortunately it was defined in a way that
disable ^L (message log) and ^P (namespaces) highlight
when using the tab key. This patch fixes such an oops.

Reference(s):
. Jan, 2023 - lessen 'bottom window' overhead
commit 28f44729dab9b292a9d5499f8cad6a12c1eb4ae5

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agomisc: eliminated some instances of trailing whitespace
Jim Warner [Sun, 22 Jan 2023 06:00:00 +0000 (00:00 -0600)]
misc: eliminated some instances of trailing whitespace

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agops: Add configurable date format for lstart field
Craig Small [Wed, 18 Jan 2023 06:46:06 +0000 (17:46 +1100)]
ps: Add configurable date format for lstart field

The lstart field has been converted to use the strftime()
function so that it uses the locale. A new option -D
allows the user to define the format that would want this
field to show.

This may mean the field will be longer than it should be,
especially for French locales and the user defined field,
but the field length can be specified too.

---

This commit started off making all the relevant fields use the
locale correctly so it could solve #226 as well. The issue
is there an implied restriction (or not) around
strftime("%b") and probably strftime("%a") for abbrievated month
and day names respectively.

English, and some/most other languages put an additional
restriction that all abbreviations are 3 characters long.
The problem is, not all languages do this.

French is a good example:
janv. févr. mars avril mai juin juil. août sept. oct. nov. déc.

Maybe strip the . at the end?
 That helps for some months, not all
Maybe take the first three characters?
 Several wide languages will have big issues
Maybe convert wide, get wcslen then use that.
 Even after that June "juin" and July "juil" are both "jui".

So, anything that uses the month (bsdstart,start) use ctime which
doesn't use locale. That solves the length issue.

stime does, which means it has this issue but its been like that
for years. You get stuff like this:

janv.13 482261
00:00 1151918
 2022 1458628
06:12 1957584

The only way to fix that would be to
 a)Make the field two characters longer
 b)Convert it back to ctime() which means everyone else
   loses.

This could have be oh-so easy if everyone made %b and %a three
(wide) characters everywhere.

References:
 procps-ng/procps#228
 procps-ng/procps#226

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agodocs: Cleanup vmstat.8
Craig Small [Wed, 18 Jan 2023 06:35:44 +0000 (17:35 +1100)]
docs: Cleanup vmstat.8

Made it follow the standard format and removed some cruft.
Added notes about you do need special permissions for some things
such as slabs.

15 months agovmstat: precision issues in unitConvert()
Qin Fandong [Wed, 18 Jan 2023 06:02:53 +0000 (17:02 +1100)]
vmstat: precision issues in unitConvert()

Fix conversion errors due to precision issues in function unitConvert

For example: unitConvert(98720620) will return 98720624, not 98720620.

Because we do (unsigned long)(float)98720620 in function unitConvert
and this is wrong! We should do (unsigned long)(double)98720620 here.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
References:
 procps-ng/procps!75

15 months agovmstat: Fixed initial si,so,bi,bo,in & cs values
Sanskriti Sharma [Wed, 18 Jan 2023 05:54:25 +0000 (16:54 +1100)]
vmstat: Fixed initial si,so,bi,bo,in & cs values

In the default display option, the first line of stats output in the
above mentioned columns was incorrect.

References:
 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668580
 procps-ng/procps!74
 procps-ng/procps#15

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agowatch: Fix buggy line-deletion behaviour with --no-linewrap
Justin Gottula [Wed, 18 Jan 2023 05:46:52 +0000 (16:46 +1100)]
watch: Fix buggy line-deletion behaviour with --no-linewrap

This change is largely based upon Justin's patch, I just moved the
reset_ansi() parts out otherwise you get strange colour reset
behaviours.

Original patch message:
I used the --no-linewrap (-w) option for the first time today, watching
some wide output that didn't quite fit in my tmux pane. Quickly I
noticed a problem: while --no-linewrap did indeed eliminate the
spillover of lines too long for the terminal "window" width, it *also*
resulted in a bunch of lines from the program output being hidden
entirely.

After some fiddling around, the exact problematic behavior appears to be
as follows:
 1. Lines which would have wrapped (more than $COLUMNS chars long) are
    handled correctly.
 2. Lines which would *not* have wrapped (shorter than $COLUMNS) are
    printed; but then the next line is *not* printed! For long sequences
    of non-wrap-length lines, you get an every-other-line-is-visible
    sort of effect.

The logic underlying the problem seems to be this: in the run_command
loop, if the x loop goes all the way to completion (meaning we've
reached the right-side edge of the window area), there's a small block
of code for --no-linewrap whose main purpose is to call find_eol, which
eats input until it hits a newline (or EOF). Clearly this is intended to
be done for lines that are too long, so that the excess characters are
discarded and the input pointer is ready to go for the subsequent line.

However, this code isn't in any way conditional on the value of eolseen!
Short/wouldn't-wrap lines will have encountered a newline character
before exhausting the entire x loop, and therefore eolseen will be true.
Long/would-wrap lines will not have encountered a newline when the x
loop is exhausted, and so eolseen will be false.

Nevertheless, find_eol is called in *both* cases. For long lines, it
does what it's meant to do. For short lines, *the newline has already
been encountered and dealt with*, and so the actual effect of find_eol
is to eat the entirety of the next line, all the way through to its
newline, such that it isn't printed at all.

References:
 procps-ng/procps!157

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agowatch: add -r to not rexec on terminal resize
Craig Small [Tue, 17 Jan 2023 09:45:48 +0000 (20:45 +1100)]
watch: add -r to not rexec on terminal resize

If you have the watched program doing some other thing every time its
run and you resize the window, you might get unexpected results. The
-r option lets you run only when the interval has expired.

References:
 procps-ng/procps!125
 procps-ng/procps#190

15 months agowatch: Pass through bell
Craig Small [Tue, 17 Jan 2023 05:59:00 +0000 (16:59 +1100)]
watch: Pass through bell

Based upon merge request 104, closes #174

References:
 procps-ng/procps!104
 procps-ng/procps#174

15 months agodocs: Minor manpage fixes
Craig Small [Mon, 16 Jan 2023 07:29:50 +0000 (18:29 +1100)]
docs: Minor manpage fixes

References:
 procps-ng/procps#230

15 months agodoc: free.1 total memory doesn't include reserved memory
Craig Small [Mon, 16 Jan 2023 06:29:36 +0000 (17:29 +1100)]
doc: free.1 total memory doesn't include reserved memory

Updated the definition of total, because its not *all* of
the installed memory but close to it.

References:
 procps-ng/procps#247

Signed-off-by: Craig Small <csmall@dropbear.xyz>
15 months agotestsuite: Test for uptime --pretty
Craig Small [Mon, 16 Jan 2023 06:22:26 +0000 (17:22 +1100)]
testsuite: Test for uptime --pretty

References:
 procps-ng/procps#263

15 months agodocs: Update drs description in ps.1 from top.1
Leonard Janis Robert König [Sun, 15 Jan 2023 04:37:49 +0000 (15:37 +1100)]
docs: Update drs description in ps.1 from top.1

References:
 procps-ng/procps!156

15 months agomisc: Add NEWS for w --pids
Craig Small [Sun, 15 Jan 2023 04:19:38 +0000 (15:19 +1100)]
misc: Add NEWS for w --pids

References:
 commit 5baf1e6226f9aa051b5570b655ed49b73ae10061
 procps-ng/procps!159

15 months agow: add --pids option to display the pid of the login and best processes.
Jan Pazdziora [Wed, 22 Jun 2022 10:07:55 +0000 (12:07 +0200)]
w: add --pids option to display the pid of the login and best processes.

15 months agomisc: Add NEWS for pgrep -H
Craig Small [Sun, 15 Jan 2023 04:11:02 +0000 (15:11 +1100)]
misc: Add NEWS for pgrep -H

References:
 commit 866abacf8805a74fb7c59cae1f64963e0a540b14
 procps-ng/procps!165

15 months agopgrep: Support matching on the presence of a userspace signal handler
Chris Down [Tue, 1 Nov 2022 00:17:21 +0000 (00:17 +0000)]
pgrep: Support matching on the presence of a userspace signal handler

In production we've had several incidents over the years where a process
has a signal handler registered for SIGHUP or one of the SIGUSR signals
which can be used to signal a request to reload configs, rotate log
files, and the like. While this may seem harmless enough, what we've
seen happen repeatedly is something like the following:

1. A process is using SIGHUP/SIGUSR[12] to request some
   application-handled state change -- reloading configs, rotating a log
   file, etc;
2. This kind of request is deprecated and removed, so the signal handler
   is removed. However, a site where the signal might be sent from is
   missed (often logrotate or a service manager);
3. Because the default disposition of these signals is terminal, sooner
   or later these applications are going to be sent SIGHUP or similar
   and end up unexpectedly killed.

I know for a fact that we're not the only organisation experiencing
this: in general, signal use is pretty tricky to reason about and safely
remove because of the fairly aggressive SIG_DFL behaviour for some
common signals, especially for SIGHUP which has a particularly ambiguous
meaning. Especially in a large, highly interconnected codebase,
reasoning about signal interactions between system configuration and
applications can be highly complex, and it's inevitable that on occasion
a callsite will be missed.

In some cases the right call to avoid this will be to migrate services
towards other forms of IPC for this purpose, but inevitably there will
be some services which must continue using signals, so we need a safe
way to support them.

This patch adds support for the -H/--require-handler flag, which matches
on processes with a userspace handler present for the signal being sent.

With this flag we can enforce that all SIGHUP reload cases and SIGUSR
equivalents use --require-handler. This effectively mitigates the case
we've seen time and time again where SIGHUP is used to rotate log files
or reload configs, but the sending site is mistakenly left present after
the removal of signal handler, resulting in unintended termination of
the process.

Signed-off-by: Chris Down <chris@chrisdown.name>
15 months agotop: include the '5' toggle on the primary help screen
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: include the '5' toggle on the primary help screen

When the p/e-cores support (via the '5' key) was added
in the patch referenced below, I intentionally omitted
that key from the top primary help screen. This seemed
appropriate since it only applied to select Intel cpus
and, besides, that screen was getting kind of crowded.

[ it remains an objective to fit on a 80x24 terminal ]

Upon reflection, I found a way to squeeze it into that
help screen and have decided to included it. Hopefully
its presence will encourage use of top's new provision
on any Intel platforms that distinguish between cores.

Reference(s):
Sep, 2022 - exploit p/e-cores provision
commit 00f5c74b1bc583d37315fa094c6f50cef7961c0c

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agotop: lessen overhead when 'bottom window' isn't active
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: lessen overhead when 'bottom window' isn't active

In the commits referenced below special code was added
to make the bottom window sticky and fix the bug after
'Cap_nl_clreos' was traded for the 'Cap_clr_eol' loop.

However, there's always major overhead associated with
interacting with a terminal. So we'll only abandon the
single 'Cap_nl_clreos' putp in favor of repeated calls
with 'Cap_clr_eol' when a bottom window isn't present.

Reference(s):
. May, 2022 - bottom window batch bug fix
commit 793f3e85aeb41788e359c2f6f387812c328ac097
. May, 2022 - bottom window made sticky
commit 0f2a755b0b2754fca79545984e25ec52f4ae4444

Signed-off-by: Jim Warner <james.warner@comcast.net>
15 months agotop: tweak whitespace in some #defines for consistency
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: tweak whitespace in some #defines for consistency

Please, do not look at the actual changes made by this
commit. Trust me they will vastly improve performance.

Signed-off-by: Jim Warner <james.warner@comcast.net>
16 months agovmstat: Update memory statistics
Ingo Saitz [Fri, 6 Jan 2023 02:30:39 +0000 (13:30 +1100)]
vmstat: Update memory statistics

vmstat <n> would update most fields, but the memory statistics
were only fetched the first time.

References:
 https://bugs.debian.org/1027963

Signed-off-by: Craig Small <csmall@dropbear.xyz>
16 months agops: Correct BSD c option
Craig Small [Mon, 19 Dec 2022 05:50:12 +0000 (16:50 +1100)]
ps: Correct BSD c option

procps 3.3.17 the c option changed the command/args field
to cmd but this got removed as part of newlib

Functionality is back in with a test case.

References:
 https://bugs.debian.org/1026326

Signed-off-by: Craig Small <csmall@dropbear.xyz>
16 months agodocs: ps.1 - comm can show command name changes
Craig Small [Tue, 13 Dec 2022 05:36:56 +0000 (16:36 +1100)]
docs: ps.1 - comm can show command name changes

The man page said it cannot show changes to comm, such as when you
use prctl(). In fact, ps can see this. The args field may not change
because its due to the path of the executable but comm can.

16 months agodocs: ps.1 remove defunct from comm
Craig Small [Mon, 12 Dec 2022 05:59:23 +0000 (16:59 +1100)]
docs: ps.1 remove defunct from comm

The field comm no longer shows defunct for zombie processes, use the
state field for this as it could be obscured if not the last
column anyhow.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
16 months agoMerge branch 'master' of gitlab.com:procps-ng/procps
Craig Small [Mon, 12 Dec 2022 05:48:21 +0000 (16:48 +1100)]
Merge branch 'master' of gitlab.com:procps-ng/procps

16 months agoskill: Restore the -p flag functionality
Craig Small [Mon, 12 Dec 2022 05:46:36 +0000 (16:46 +1100)]
skill: Restore the -p flag functionality

When the skill program was ported to the new API the code to filter
on PID, used by the -p option, was missed. It is now restored.

References:
 https://bugs.debian.org/1025915

16 months agonls: Update man translation files
Craig Small [Fri, 9 Dec 2022 11:56:14 +0000 (22:56 +1100)]
nls: Update man translation files

17 months agobuild-sys: Remove duplicate manpages
Werner Fink [Tue, 6 Dec 2022 11:30:35 +0000 (22:30 +1100)]
build-sys: Remove duplicate manpages

Fix the building of the man pages instead of installing the same
english ones twice.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agotests: Fix type for check_fatal_proc_unmounted
Craig Small [Tue, 6 Dec 2022 11:23:08 +0000 (22:23 +1100)]
tests: Fix type for check_fatal_proc_unmounted

While ps used the correct type for PIDS_VM_RSS the test
did not. For some reason this only appeared to be an issue
for s390x

References:
 https://bugs.debian.org/1025495

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agoIntegrate the 'newlib' branch with the 'master' branch
Craig Small [Mon, 5 Dec 2022 11:44:27 +0000 (22:44 +1100)]
Integrate the 'newlib' branch with the 'master' branch

[ with the histories of both branches also preserved ]

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agobuild-sys: Set library to 0:1:0 v4.0.2
Craig Small [Mon, 5 Dec 2022 10:04:05 +0000 (21:04 +1100)]
build-sys: Set library to 0:1:0

There was a bug fix in the library but no functions add/moved/changed
Revision incremented.

17 months agonls: update po and ro
Craig Small [Mon, 5 Dec 2022 10:01:48 +0000 (21:01 +1100)]
nls: update po and ro

17 months agonls: Update translations
Craig Small [Mon, 5 Dec 2022 09:59:00 +0000 (20:59 +1100)]
nls: Update translations

Added po and ro languages too.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agoNEWS: Change to 4.0.2 newlib v4.0.2_rc1
Craig Small [Fri, 25 Nov 2022 21:55:21 +0000 (08:55 +1100)]
NEWS: Change to 4.0.2

17 months agonls: Update
Craig Small [Fri, 25 Nov 2022 21:53:54 +0000 (08:53 +1100)]
nls: Update

17 months agonls: Update translations
Craig Small [Thu, 10 Nov 2022 10:56:22 +0000 (21:56 +1100)]
nls: Update translations

Side-effect of previous commit

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agonls: Update the man-po logic
Craig Small [Thu, 10 Nov 2022 10:52:19 +0000 (21:52 +1100)]
nls: Update the man-po logic

Put the man-po pot file under version control like its po/*.pot sibling.

Makefile now auto-matically generates the list of man pages as they are
in a single directory. There were some missing!

pot file target is dependent on the untranslated man pages

When downloading from translation project, run po4a to sync the new
po files correctly.

Downloaded man po files from translation project and synched.

Thanks to @gorean for the info

References:
 procps-ng/procps#258

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agopkill: Don't show --echo twice
Chris Down [Tue, 1 Nov 2022 00:46:18 +0000 (00:46 +0000)]
pkill: Don't show --echo twice

Commit c8384e682c1c ("pgrep: add pwait") changed from the old i_am_pkill
logic, but mistakenly missed a break in the pkill case. This results in
showing -e/--echo twice when running `pkill -h'.

Signed-off-by: Chris Down <chris@chrisdown.name>
17 months agorevert: pidfd_open check
Craig Small [Wed, 9 Nov 2022 10:32:26 +0000 (21:32 +1100)]
revert: pidfd_open check

This change confused the pidfd_open check with the existance
of NR_pidfd_open

17 months agofix pifd_open check
Fabrice Fontaine [Thu, 3 Nov 2022 17:24:53 +0000 (18:24 +0100)]
fix pifd_open check

Replace AC_CHECK_FUNC by AC_CHECK_FUNCS otherwise HAVE_PIDFD_OPEN will
never be defined resulting in the following build failure if pidfd_open
is available but __NR_pidfd_open is not available:

pgrep.c: In function 'pidfd_open':
pgrep.c:748:17: error: '__NR_pidfd_open' undeclared (first use in this function); did you mean 'pidfd_open'?
  748 |  return syscall(__NR_pidfd_open, pid, flags);
      |                 ^~~~~~~~~~~~~~~
      |                 pidfd_open

This build failure is raised since the addition of pwait in version
3.3.17 and
https://gitlab.com/procps-ng/procps/-/commit/c8384e682c1cfb3b2dc797e0f8a3cbaaccf7a3da

Fixes:
 - http://autobuild.buildroot.org/results/f23a5156e641b2ebdd673973dec0f9c87760c688

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
17 months agow: Show time with TIME_BITS=64 on 32bit env
Craig Small [Wed, 9 Nov 2022 10:02:09 +0000 (21:02 +1100)]
w: Show time with TIME_BITS=64 on 32bit env

Thanks to @kabe-gl for this patch.

w command shows ????? for LOGIN@ column when compiled on 32bit environment with -D_TIME_BITS=64.

References:
 #256

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agotop: also adapted to absent 'core id' in /proc/cpuinfo
Jim Warner [Tue, 25 Oct 2022 10:05:05 +0000 (05:05 -0500)]
top: also adapted to absent 'core id' in /proc/cpuinfo

Just as our library was made responsive to a potential
missing 'core id', the top program should also change.

That's because he has his own PRETENDECORE #define and
if that was activated on a platform without 'core id',
the 'CpP' notations would have otherwise been omitted.

Reference(s):
. Oct, 2022 - library fix for missing 'core id'
commit b89e3230b2baa5b82a2961b240731db95a887f26

Signed-off-by: Jim Warner <james.warner@comcast.net>
18 months agomisc: Add NEWS item for missing core_id
Craig Small [Tue, 25 Oct 2022 09:18:35 +0000 (20:18 +1100)]
misc: Add NEWS item for missing core_id

Tracking what we do to the library so the N:N:N version strings are
updated. This is just a NEWS item for previous commit.

References:
 commit b89e3230b2baa5b82a2961b240731db95a887f26

18 months agolibrary: adapted for absent 'core id' in /proc/cpuinfo
Jim Warner [Tue, 25 Oct 2022 05:00:00 +0000 (00:00 -0500)]
library: adapted for absent 'core id' in /proc/cpuinfo

A big oops on my part - with a big thanks to Dr. Fink.

[ this version eliminates an extraneous startup call ]
[ to the 'stat_cores_verify' function as superfluous ]

Reference(s):
https://www.freelists.org/post/procps/For-procpsng4001-No-core-id-in-eg-aarch65-or-ppc64le-proccpuinfo

Prototyped by: Dr. Werner Fink <werner@suse.de>
Signed-off-by: Jim Warner <james.warner@comcast.net>
18 months agonls: Fix polish translation (again)
Craig Small [Thu, 20 Oct 2022 11:15:31 +0000 (22:15 +1100)]
nls: Fix polish translation (again)

18 months agotop: whack an obsolete string plus its associated code <=== port of newlib 244f2b33 oldlib
Jim Warner [Mon, 10 Oct 2022 18:24:13 +0000 (13:24 -0500)]
top: whack an obsolete string plus its associated code <=== port of newlib 244f2b33

______________________________ original newlib message
----------------------------------- ( minus git hash )

When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
18 months agoNEWS: Set version to 4.0.1 v4.0.1
Craig Small [Thu, 20 Oct 2022 09:58:25 +0000 (20:58 +1100)]
NEWS: Set version to 4.0.1

18 months agonls: Last translation update for 4.0.1
Craig Small [Thu, 20 Oct 2022 09:56:17 +0000 (20:56 +1100)]
nls: Last translation update for 4.0.1

18 months agonls: Update translations
Craig Small [Sun, 16 Oct 2022 09:06:14 +0000 (20:06 +1100)]
nls: Update translations

18 months agotop: restore missing support for 'MEMGRAPH_OLD' define
Jim Warner [Wed, 12 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: restore missing support for 'MEMGRAPH_OLD' define

When support for graphs was refactored, in that commit
referenced below, the logic for our 'MEMGRAPH_OLD' was
lost while the #define itself remained in the .h file.

Faced with deleting the #define or restoring the logic
I chose the latter. Thus, if one wanted to be reminded
how overstated 'used' memory once was, it can be done.

Reference(s):
. Sep, 2022 - refactored graph support
commit 2d5b51d1a2aa19d077a2f3db5be187f982d70e70

Signed-off-by: Jim Warner <james.warner@comcast.net>
18 months agotop: whack an obsolete string plus its associated code
Jim Warner [Wed, 12 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: whack an obsolete string plus its associated code

When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit c91b371485b7ffaea3a7c669b080328d141dfb6b

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: fix a flaw in excluding a string from translation
Jim Warner [Tue, 4 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: fix a flaw in excluding a string from translation

In that commit referenced below, I removed the command
line help text from any translation so the TP wouldn't
delay our 4.0.1 release any further. In looking to the
future, when we might be able to reverse that, I found
gettext tools blocking use of the compile conditional.

They are too primitive for the original approach so we
must modify that exclusion mechanism hack accordingly.

____________________________excerpted program comments

The provision excluding some strings is intended to be
used very sparingly. It exists in case we collide with
some translation project person in a position to delay
a future release over his or her personal preferences.

If it's ever enabled, it will produce a fatal compiler
error as our only option since those gettext tools are
far too primitive to be influenced with a conditional.
They always ignore a '_X()' macro no matter its state.

Reference(s):
commit 8a368bfb05a978a9904647f128dec8f1c4d4cc84

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agonls: man translation updates v4.0.1rc3
Craig Small [Tue, 4 Oct 2022 11:36:48 +0000 (22:36 +1100)]
nls: man translation updates

19 months agonls: Update translations
Craig Small [Tue, 4 Oct 2022 00:02:04 +0000 (11:02 +1100)]
nls: Update translations

19 months agotop: enable exclusion of some strings from translation
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: enable exclusion of some strings from translation

The provision excluding some strings is intended to be
used very sparingly. It exists in case we collide with
some translation project person in a position to delay
a future release over his or her personal preferences.

(it's currently used only on v4.0.1 command line help)

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: always validate that p-core/e-core identification
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: always validate that p-core/e-core identification

Prior to this commit, when the '5' key was struck, top
would check for the presence of e-cores just one time.

That meant if a some cpu was brought online, and it in
turn exposed a new e-core after top has started, users
needed a top restart to activate the  new '5' feature.

So, now we'll check for any e-cores with each '5' key.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agolibrary: tweak support of p-core/e-core identification
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
library: tweak support of p-core/e-core identification

Wow, after this we'll eliminate one 'jmp' instruction!

[ plus we can also save a single precious whitespace ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agonls: Update translations v4.0.1rc2
Craig Small [Thu, 29 Sep 2022 22:28:58 +0000 (08:28 +1000)]
nls: Update translations

19 months agoNEWS: Add entry for free --si fix
Craig Small [Wed, 28 Sep 2022 07:59:23 +0000 (17:59 +1000)]
NEWS: Add entry for free --si fix

References:
 procps-ng/procps!163

19 months agofree: --si changes base of default output
Jan Rybar [Wed, 28 Sep 2022 07:57:03 +0000 (07:57 +0000)]
free: --si changes base of default output

19 months agobuild-sys: Allow enable-watch9bit and with-ncurses
Craig Small [Wed, 28 Sep 2022 07:42:17 +0000 (17:42 +1000)]
build-sys: Allow enable-watch9bit and with-ncurses

The commit that changed configure.ac was supposed to check for when
someone removes ncurses using the flag --without-ncurses

Unfortunately the change didn't check if the user was specifying
--without or --with meaning if they didn use --with-ncurses the
configure script would error out.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
References:
  commit 812864181408398af98b217f384205a6f2f9cb68
  procps-ng/procps#251

19 months agodoc: updated with library p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
doc: updated with library p-core/e-core identification

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: exploit that library p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: exploit that library p-core/e-core identification

I sure hope we won't disappoint the library with these
changes since we're only exploiting one of the two new
enumerators that the immediately prior patch provided.

Now top will be able to offer a visual clue as to each
cpu (thread actually) core association. Is it a P-core
offering multiple threads or a single threaded E-core.

We'll accomplish this feat with a subtle change to the
states portion ('t' toggle) of the summary area. Where
before processors were represented as 'Cpu', they will
now be displayed as 'CpP' (P-core) and 'CpE' (E-core).

[ assuming that new '5' command toggle has been used ]

There are also new provisions for filtering those cpus
by their core type association via the new '5' toggle.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agolibrary: provided for cpu p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
library: provided for cpu p-core/e-core identification

With Intel's 12th generation Alder Lake processors now
providing two distinct types of core, it would be nice
if the library offered some sort of clue to core type.

Well, with this patch it does. We'll have 2 additional
enumerators. One deals with the cpu's core association
and the other provides the type of that core (P or E).

[ now, all we need is for some program to exploit it ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: avoid any potential race involving 'BREAK_screen' <=== port of newlib 3e5016c2
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: avoid any potential race involving 'BREAK_screen' <=== port of newlib 3e5016c2

______________________________ original newlib message
----------------------------------- ( minus git hash )

When that 'Bottom' window was being finalized, an enum
of BREAK_screen was added to the Frames_signal values.
This was done so some full screen replacement function
could flag the need for that bottom window to go away.

Around that same time, top was made more responsive to
keyboard input so that residual portions of a previous
bottom window would not linger until the next refresh.
This happened if going from a larger (^N, environment)
bottom window to some smaller window (^P, namespaces).

The combined effect of these changes was to create the
potential race condition this commit addresses. If the
user encountered a SIGWINCH while on any of those full
screen replacement displays (help, fields mgmt, etc.),
endless redraws would occur. A ^C was the only option.

Henceforth we will protect against any redraw loops by
clearing Frames_signal each time a redraw is required.

[ along the way, we'll make the 'q' key work on that ]
t secondary 'windows' help screen as it should, even ]
[ though it is not documented on that screen itself. ]

Reference(s):
. May, 2022 - more responsive to keyboard input
commit ........................................
. May, 2022 - maybe force the bottom window off
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: try avoiding the edge of a 'divide by zero' cliff <=== port of newlib 5f9185e0
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: try avoiding the edge of a 'divide by zero' cliff <=== port of newlib 5f9185e0

______________________________ original newlib message
----------------------------------- ( minus git hash )

Darn, after testing on some older, out of date distros
I was embarrassed to find some awful code I created in
the commit shown below. I was rewarded with some 'nan'
floating point values and 'inf' computational results.

Reference(s);
. a missed opportunity to repent
commit ........................................
. true source of my original sin
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: fix 'TOG4_MEM_1UP' if two abreast summary display <=== port of newlib 124f26a4
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix 'TOG4_MEM_1UP' if two abreast summary display <=== port of newlib 124f26a4

The 'unrelated' note reflected in the original message
doesn't apply since we already used that correct name.

______________________________ original newlib message

If one per line display of Mem/Swap data was forced by
this #define, screen width was not fully exploited for
graph mode. Rather, those graphs were scaled just like
they would be if aligned with a nonexistent separator.

With this commit, those graphs will expand to fill the
screen width (or be limited by the maximum of '100' ).

[ and in unrelated news a variable used in do_memory ]
[ was changed for consistency. it doesn't affect the ]
[ the results since a part1 of swap was always zero. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: enhance memory graphs two abreast summary display <=== port of newlib 602146a6
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: enhance memory graphs two abreast summary display <=== port of newlib 602146a6

______________________________ original newlib message

This patch introduces a new #define TOG4_MEM_FIX which
serves to turn off the new feature it also implements.

The feature, on by default, provides a flexible memory
graph approach which strives to always keep its visual
separator in alignment with cpu separators seen above.

Below is a summary of the algorithm implementing this:

1) First, ascertain the widest graph which corresponds
to the largest number of cpu graphs but doesn't exceed
maximum allowable graph width (i.e. GRAPH_length_max).

2) Next, apply that to the graphed 'Mem' portion which
is likely to remain entirely visible. However, it will
grow or shrink depending on total adjacent cpu graphs.

3) Last, the same width is used for the 'Swap' portion
but that graph is considered sacrificial and very well
could be truncated depending on the width of a screen.

[ along the way, when the cpu graphs revert to their ]
[ abbreviated form, the memory graphs will also show ]
[ an abbreviated prefix. in this way the widths will ]
[ also be maximized, reducing potential distortions. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: cosmetic changes with two abreast summary display <=== port of newlib bf916fdf
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: cosmetic changes with two abreast summary display <=== port of newlib bf916fdf

______________________________ original newlib message

This commit will change some comments, adjust a little
whitespace but mostly rename some #define identifiers.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: distinct separator if two abreast summary display <=== port of newlib 96153c0f
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: distinct separator if two abreast summary display <=== port of newlib 96153c0f

______________________________ original newlib message

When displaying detailed memory statistics two abreast
data for the lines are less than those for cpus. So we
can exploit such a difference to provide a distinctive
separator. This may help separating cpu & memory data.

[ in truth, this happened before this patch. what we ]
[ are doing now is polishing that accidental feature ]
[ and placing it under the control of a conditional. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: harden detailed stats two abreast summary display <=== port of newlib e5386f1f
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: harden detailed stats two abreast summary display <=== port of newlib e5386f1f

______________________________ original newlib message

When displaying detailed cpu statistics, as opposed to
those scalable graphs, only two per line can be shown.

Therefore, if we are showing a detail version, our '4'
toggle must prematurely revert to single mode display.

Conversely, the 't' toggle must also turn off that '4'
toggle rather than try to print more than 2 abreast if
we're currently executing in detailed statistics mode.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: refined memory graphs two abreast summary display <=== port of newlib 5c5bff39
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: refined memory graphs two abreast summary display <=== port of newlib 5c5bff39

______________________________ original newlib message

When more than two cpus are displayed per summary area
line in graph form, those memory graphs were scaled to
that same width for consistency & aesthetics. However,
they probably shouldn't have been reduced to less than
terminal width due to a resulting loss of information.

[ after all, detailed memory stats are never reduced ]

So now, supporting logic was refactored to behave just
as it did before the 4 toggle was expanded beyond '1'.

[ the changes impact the 2 memory graphs exclusively ]

Reference(s):
https://www.freelists.org/post/procps/top-enhancements-2-bugs-swatted,1

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: additional tweaks for two abreast summary display <=== port of newlib 3543172d
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: additional tweaks for two abreast summary display <=== port of newlib 3543172d

______________________________ original newlib message

This patch just supplements the previous series with a
few minor tweaks representing some diverse objectives:

. a recent date for man page (which i always overlook)

. improved length calculations to maximize graph width

. a proper response to platforms with less than 8 cpus

. more consistency and readability with one blank line

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: avoid any potential race involving 'BREAK_screen'
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: avoid any potential race involving 'BREAK_screen'

When that 'Bottom' window was being finalized, an enum
of BREAK_screen was added to the Frames_signal values.
This was done so some full screen replacement function
could flag the need for that bottom window to go away.

Around that same time, top was made more responsive to
keyboard input so that residual portions of a previous
bottom window would not linger until the next refresh.
This happened if going from a larger (^N, environment)
bottom window to some smaller window (^P, namespaces).

The combined effect of these changes was to create the
potential race condition this commit addresses. If the
user encountered a SIGWINCH while on any of those full
screen replacement displays (help, fields mgmt, etc.),
endless redraws would occur. A ^C was the only option.

Henceforth we will protect against any redraw loops by
clearing Frames_signal each time a redraw is required.

[ along the way, we'll make the 'q' key work on that ]
t secondary 'windows' help screen as it should, even ]
[ though it is not documented on that screen itself. ]

Reference(s):
. May, 2022 - more responsive to keyboard input
commit 3ea1bc779fb7ca5bf065a5ca620ec5b5823bc61c
. May, 2022 - maybe force the bottom window off
commit d66c1f39b52d53ec279fc638aa4a6352d7672201

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: try avoiding the edge of a 'divide by zero' cliff
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: try avoiding the edge of a 'divide by zero' cliff

Darn, after testing on some older, out of date distros
I was embarrassed to find some awful code I created in
the commit shown below. I was rewarded with some 'nan'
floating point values and 'inf' computational results.

Reference(s);
. a missed opportunity to repent
commit 5c5bff392bfaf78b7bacb9b954c1fd1e9d818544
. true source of my original sin
commit 2d5b51d1a2aa19d077a2f3db5be187f982d70e70

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: fix 'TOG4_MEM_1UP' if two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix 'TOG4_MEM_1UP' if two abreast summary display

If one per line display of Mem/Swap data was forced by
this #define, screen width was not fully exploited for
graph mode. Rather, those graphs were scaled just like
they would be if aligned with a nonexistent separator.

With this commit, those graphs will expand to fill the
screen width (or be limited by the maximum of '100' ).

[ and in unrelated news a variable used in do_memory ]
[ was changed for consistency. it doesn't affect the ]
[ the results since a part1 of swap was always zero. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: enhance memory graphs two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: enhance memory graphs two abreast summary display

This patch introduces a new #define TOG4_MEM_FIX which
serves to turn off the new feature it also implements.

The feature, on by default, provides a flexible memory
graph approach which strives to always keep its visual
separator in alignment with cpu separators seen above.

Below is a summary of the algorithm implementing this:

1) First, ascertain the widest graph which corresponds
to the largest number of cpu graphs but doesn't exceed
maximum allowable graph width (i.e. GRAPH_length_max).

2) Next, apply that to the graphed 'Mem' portion which
is likely to remain entirely visible. However, it will
grow or shrink depending on total adjacent cpu graphs.

3) Last, the same width is used for the 'Swap' portion
but that graph is considered sacrificial and very well
could be truncated depending on the width of a screen.

[ along the way, when the cpu graphs revert to their ]
[ abbreviated form, the memory graphs will also show ]
[ an abbreviated prefix. in this way the widths will ]
[ also be maximized, reducing potential distortions. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: cosmetic changes with two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: cosmetic changes with two abreast summary display

This commit will change some comments, adjust a little
whitespace but mostly rename some #define identifiers.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: distinct separator if two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: distinct separator if two abreast summary display

When displaying detailed memory statistics two abreast
data for the lines are less than those for cpus. So we
can exploit such a difference to provide a distinctive
separator. This may help separating cpu & memory data.

[ in truth, this happened before this patch. what we ]
[ are doing now is polishing that accidental feature ]
[ and placing it under the control of a conditional. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: harden detailed stats two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: harden detailed stats two abreast summary display

When displaying detailed cpu statistics, as opposed to
those scalable graphs, only two per line can be shown.

Therefore, if we are showing a detail version, our '4'
toggle must prematurely revert to single mode display.

Conversely, the 't' toggle must also turn off that '4'
toggle rather than try to print more than 2 abreast if
we're currently executing in detailed statistics mode.

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agodoc: top now has more than two abreast summary display <=== port of newlib fd529e96
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
doc: top now has more than two abreast summary display <=== port of newlib fd529e96

______________________________ original newlib message
--------------------------------------------- ( none )

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: implemented more than two abreast summary display <=== port of newlib 248efdf1
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: implemented more than two abreast summary display <=== port of newlib 248efdf1

______________________________ original newlib message

Well, here it is. This is what the preceding series of
commits was leading to: an ability to show up to eight
cpus per Summary Area line. In reality, a self imposed
limit of four cpus on such lines seems more realistic.

In any case, the new capability could also be employed
along with that '!' toggle which consolidates adjacent
cpus into a solitary graph. When used together the '4'
and '!' toggles should accommodate any number of cpus.

Signed-off-by: Jim Warner <james.warner@comcast.net>