Update to 3.3.12
This commit is contained in:
parent
3ed7941f0b
commit
0568cb60bf
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,9 +1 @@
|
||||
/procps-ng-3.3.2.tar.xz
|
||||
/procps-ng-3.3.4-20120807git.tar.xz
|
||||
/procps-ng-3.3.3-20120807git.tar.xz
|
||||
/procps-ng-3.3.4.tar.xz
|
||||
/procps-ng-3.3.6.tar.xz
|
||||
/procps-ng-3.3.7.tar.xz
|
||||
/procps-ng-3.3.8.tar.xz
|
||||
/procps-ng-3.3.9.tar.xz
|
||||
/procps-ng-3.3.10.tar.xz
|
||||
/procps-ng-3.3.12.tar.xz
|
||||
|
52
README.md
Normal file
52
README.md
Normal file
@ -0,0 +1,52 @@
|
||||
[![build status](https://gitlab.com/ci/projects/2142/status.png?ref=master)](https://gitlab.com/ci/projects/2142?ref=master)
|
||||
procps
|
||||
======
|
||||
|
||||
procps is a set of command line and full-screen utilities that provide
|
||||
information out of the pseudo-filesystem most commonly located at /proc.
|
||||
This filesystem provides a simple interface to the kernel data structures.
|
||||
The programs of procps generally concentrate on the structures that describe
|
||||
the processess running on the system.
|
||||
|
||||
The following programs are found in procps:
|
||||
* *free* - Report the amount of free and used memory in the system
|
||||
* *kill* - Send a signal to a process based on PID
|
||||
* *pgrep* - List processes based on name or other attributes
|
||||
* *pkill* - Send a signal to a process based on name or other attributes
|
||||
* *pmap* - Report memory map of a process
|
||||
* *ps* - Report information of processes
|
||||
* *pwdx* - Report current directory of a process
|
||||
* *skill* - Obsolete version of pgrep/pkill
|
||||
* *slabtop* - Display kernel slab cache information in real time
|
||||
* *snice* - Renice a process
|
||||
* *sysctl* - Read or Write kernel parameters at run-time
|
||||
* *tload* - Graphical representation of system load average
|
||||
* *top* - Dynamic real-time view of running processes
|
||||
* *uptime* - Display how long the system has been running
|
||||
* *vmstat* - Report virtual memory statistics
|
||||
* *w* - Report logged in users and what they are doing
|
||||
* *watch* - Execute a program periodically, showing output fullscreen
|
||||
|
||||
## Reporting Bugs
|
||||
There are a few ways of reporting bugs or feature requests:
|
||||
|
||||
1. Your distributions bug reporter. If you are using a distribution your first
|
||||
port of call is their bug tracker. This is because each distribution has their
|
||||
own patches and way of dealing with bugs. Also bug reporting often does not need
|
||||
any subscription to websites.
|
||||
2. GitLab Issues - To the left of this page is the issue tracker. You can report
|
||||
bugs here.
|
||||
3. Email list - We have an email list (see below) where you can report bugs.
|
||||
The problem with this method is bug reports often get lost and cannot be
|
||||
tracked. This is especially a big problem when its something that will take
|
||||
time to resolve.
|
||||
|
||||
If you need to report bugs, there is more details on the
|
||||
[Bug Reporting](https://gitlab.com/procps-ng/procps/blob/master/Documentation/bugs.md)
|
||||
page.
|
||||
|
||||
## Email List
|
||||
The email list for the developers and users of procps is found at
|
||||
http://www.freelists.org/archive/procps/
|
||||
This email list discusses the development of procps and is used by distributions
|
||||
to also forward or discuss bugs.
|
377
README.top
Normal file
377
README.top
Normal file
@ -0,0 +1,377 @@
|
||||
This file summarizes changes to the top program and supporting documentation
|
||||
introduced on March 31, 2011.
|
||||
|
||||
Contents:
|
||||
DOCUMENT Changes
|
||||
INTERNAL Improvements
|
||||
EXTERNAL Improvements
|
||||
BUGS Previously Fixed and Preserved
|
||||
BUGS Newly/Nearly Fixed
|
||||
BUGS/WISH-LISTS That Should Go Bye-bye
|
||||
BUGS FIXED You Didn't Know You Had
|
||||
OTHER Changes, Hopefully They Won't Bite You
|
||||
BENCHMARKS
|
||||
|
||||
|
||||
DOCUMENT Changes =========================================================
|
||||
. The entire file was cleaned up, standardized and expanded to include:
|
||||
- a new section "2. SUMMARY Display" added for symmetry with Fields
|
||||
- nine new fields were added to section "3a. DESCRIPTIONS of Fields"
|
||||
- a new section "3b. MANAGING Fields" replaced the obsolete section
|
||||
"2b. SELECTING and ORDERING Columns"
|
||||
- section "5c. SCROLLING a Window" was added for that new feature
|
||||
|
||||
. I don't know when the explanations for CODE and DATA were changed to
|
||||
show 'virtual' memory, but I think there's a reason their alternate
|
||||
names contain the word 'resident'. Thus they were changed back to
|
||||
say 'physical memory'.
|
||||
|
||||
. And as I indicated in a previous email, the former string identifier
|
||||
'ME' was restored as were the 'h' key/command conventions (vs. <h>).
|
||||
|
||||
Oops, the 'h' key/command conventions remain restored, but subsequent
|
||||
testing revealed problems with the .ME string identifier. Thus, it was
|
||||
changed to .WE (along with the companion .Me/.We id).
|
||||
|
||||
. Also previously mentioned, the 'man2html' program translates top.1 to
|
||||
HTML with near perfect fidelity. I take that to mean there should be
|
||||
no problems with the top.1 source on most other platforms.
|
||||
|
||||
To further improve translation to HTML, several .Bd and .Ed macros
|
||||
were added to preserve literal (fixed width) spacing.
|
||||
|
||||
|
||||
INTERNAL Improvements ====================================================
|
||||
. The old restriction of 26 fields has been lifted. With this new-top
|
||||
100+ fields are now possible. It currently supports up to 55, of
|
||||
which 35 are in use. Adding a new field is almost too easy.
|
||||
|
||||
. Task row construction has been considerably improved -- both from
|
||||
a programming perspective and a performance perspective.
|
||||
|
||||
. The column highlighting costs for sort field visibility were
|
||||
virtually eliminated.
|
||||
|
||||
An optional define (USE_X_COLHDR) can be enabled to completely
|
||||
eliminate any costs associated with the 'x' command toggle.
|
||||
|
||||
. The management of the HST_t structures, used for %cpu calculations,
|
||||
was optimized with a hashing scheme. Thus the need for a qsort then
|
||||
a binary search in each frame was completely eliminated.
|
||||
|
||||
An optional define can restore the former qsort/bsearch approach but
|
||||
with an internal inlined binary search function offering substantially
|
||||
better performance than the old top.
|
||||
|
||||
. This far more capable new-top executable is no larger than old top.
|
||||
|
||||
. The above combine to produce substantially improved performance
|
||||
whose details are documented below under BENCHMARKS.
|
||||
|
||||
|
||||
EXTERNAL Improvements ====================================================
|
||||
. Field management has been completely redesigned. It's now embodied
|
||||
on a single screen where display-ability, position and sort selection
|
||||
can be handled in one place -- for all windows at one time!
|
||||
|
||||
This function is dependent on cursor motion keys and should a device
|
||||
not have the customary arrow keys, alternatives are provided and
|
||||
documented under "Operation" near the beginning of the man page.
|
||||
|
||||
. The following new fields have been added:
|
||||
Group Id
|
||||
Minor Page Faults
|
||||
Number of Threads
|
||||
Process Group Id
|
||||
Real User Id
|
||||
Saved User Id
|
||||
Saved User Name
|
||||
Session Id
|
||||
Tty Process Group Id
|
||||
|
||||
. Scrolling keys now allow one to move the view of any window vertically
|
||||
or horizontally to reveal any desired task or column. Previously, only
|
||||
some tasks were viewable even with reversible, selectable sort columns.
|
||||
|
||||
Each of the four windows is capable of maintaining its own scrolled
|
||||
coordinates and an optional toggle ('C') displays a message aiding
|
||||
navigation within the available tasks and displayable fields.
|
||||
|
||||
. User interactive line oriented input now provides for true line
|
||||
editing supported by these new keys:
|
||||
Left/Right arrow keys, Delete key, Backspace and
|
||||
Home/End keys (likely limited to xterm, not terminal)
|
||||
|
||||
. User filtering via the -u | -U interactive commands is now window
|
||||
based which means that different windows could be used to filter
|
||||
different users.
|
||||
|
||||
. Signal handling has been normalized and is now consistent regardless
|
||||
of the particular top screen a user may have been using.
|
||||
|
||||
. The 'i' toggle now shows any task that has used *some* cpu since the
|
||||
last screen update. It's no longer limited to just running tasks.
|
||||
|
||||
. The summary area 'task states' line now reflects either 'Threads'
|
||||
or 'Tasks' depending on the -H toggle.
|
||||
|
||||
|
||||
BUGS Previously Fixed and Preserved ======================================
|
||||
( but not necessarily literally)
|
||||
. 228822, suspending top leaves xterm in slightly messed-up state
|
||||
. 256376, segfaults, if the xterm is to small
|
||||
. 320289, segv on sigwinch
|
||||
. 351065, wrong highlight 1st column (escape characters displayed)
|
||||
. 358724, accepts extra numeric args
|
||||
. 378695, seg fault if "/proc" is not mounted
|
||||
. 426782, UID field is too narrow
|
||||
. 458986, should check xterm for EOF/EIO
|
||||
. 459890, Irix mode should use %#4.1f when threads shown
|
||||
|
||||
|
||||
BUGS Newly/Nearly Fixed ==================================================
|
||||
. 225542, 'Unknown command' message blocks further commands
|
||||
The message is now displayed using usleep for 1.25 seconds, instead
|
||||
of the former full 2 seconds. And while it still blocks further
|
||||
commands, the delay is much more tolerable.
|
||||
|
||||
Can we consider this bug 'nearly' fixed?
|
||||
|
||||
. 410292, interface error when using backspace
|
||||
Full line editing was added but could be disabled via a #define.
|
||||
And via that define, even under basic termios support, the backspace
|
||||
problem was cured.
|
||||
|
||||
. 567509, top idle command ('i') not working for threaded programs
|
||||
Since the 'i' command now reflects tasks that have used *some* cpu,
|
||||
and is no longer dependent on an 'R' state, I *believe/hope* this
|
||||
bug has been swatted.
|
||||
|
||||
|
||||
BUGS/WISH-LISTS That Should Go Bye-bye ===================================
|
||||
. 340751, wish for hostname to benefit multiple top sessions
|
||||
Craig's suggestion regarding symlinks is the perfect solution.
|
||||
How dare Craig say that the solution was "not ideal" !
|
||||
|
||||
. 586497, wish for graceful degradation on small screen sizes
|
||||
This objective could be accomplished by setting up 2 symlinks for
|
||||
top, personalizing them for the 2 tiny phone displays, then writing
|
||||
the respective configuration files.
|
||||
|
||||
I shudder at the programming effort suggested by Paul. And when it
|
||||
was done you'd find everybody else would have different criteria.
|
||||
|
||||
|
||||
BUGS FIXED You Didn't Know You Had =======================================
|
||||
. Without amplifying the dirty details, the long standing occasionally
|
||||
reported display corruption, and an unreported source of performance
|
||||
degradation, has been eliminated. The cure is in the elimination of
|
||||
the Pseudo_cols variable and the improved PUFF macro.
|
||||
|
||||
. Line oriented input was not sensitive to screen width. Thus a user
|
||||
could hold down any key and ultimately line wrap, overwriting the
|
||||
columns header and the entire screen. New top prevents this.
|
||||
|
||||
. User filtering (-u|-U) via a user ID (not name) now validates that
|
||||
number. The old-top just made sure it was numeric, then blindly
|
||||
displayed no matching users (i.e. an empty window).
|
||||
|
||||
. The threads toggle ('H') is no longer window based but more properly
|
||||
applies to all windows. The previous implementation produced the
|
||||
following aberration if multiple windows were being shown:
|
||||
. -H would be acknowledged and applied to all visible windows
|
||||
. keying 'a' or 'w' would silently turn it off
|
||||
. then keying -H would turn it back on, but the user expected off
|
||||
|
||||
. If you hit ^Z on any help or fields screen to suspend old-top, after
|
||||
issuing 'fg' you would then be left with a seemingly hung application
|
||||
inviting ^C. In truth, one could recover with the space bar, but that
|
||||
was far from intuitive.
|
||||
|
||||
. The old-top consistently writes 1 extra byte for each task row or 1
|
||||
byte too few for columns headers, depending on your perspective.
|
||||
The new top writes the same number of bytes for each.
|
||||
|
||||
. By failing to clear to eol, old top left the display in a terrible
|
||||
state after exiting a 'fields' screen when only a few columns were
|
||||
being displayed.
|
||||
|
||||
. The old-top used a zero value for the L_NONE library flag which could
|
||||
cause repeated rebuilding of columns headers with each frame. In truth,
|
||||
this was not likely to happen in real life since only two fields actually
|
||||
used that flag. However, if it did happen, performance could be degraded
|
||||
by 800%.
|
||||
|
||||
|
||||
OTHER Changes, Hopefully They Won't Bite You =============================
|
||||
. The undocumented TOPRC environment variable is no longer supported.
|
||||
Any similar need can be met through a symlink alias.
|
||||
|
||||
. The use of environment variables to override terminal size is now
|
||||
off by default but could be enabled through '#define TTYGETENVYES'.
|
||||
|
||||
. The global 'bold enable' toggle is active by default and thus agrees
|
||||
with the documentation. It's been wrong ever since Al's wholesale
|
||||
'cosmetic' changes in procps-3.2.2.
|
||||
|
||||
. Task defaults now show bold (not reverse) and row highlighting.
|
||||
This agrees with what was always stated in the documentation.
|
||||
|
||||
. The 'H' toggle (thread mode) is not persistent. Persistence can be
|
||||
achieved with a simple shell script employing the -H switch.
|
||||
|
||||
. Then 'g' and 'G' commands were reversed to reflect their likely use.
|
||||
|
||||
|
||||
BENCHMARKS ===============================================================
|
||||
Tested as root with nice -10 and using only common fields
|
||||
( on a pretty old, slow laptop under Debian Lenny )
|
||||
but rcfiles specified identical sort fields and identical
|
||||
settings for the 'B', 'b', 'x' and 'y' toggles (even though
|
||||
the defaults are not necessarily identical).
|
||||
|
||||
In every case new-top outperforms old-top, but I've shown %
|
||||
improvements for only the most significant. Those cases mostly
|
||||
involve colors with both row & column highlighting. I suggested
|
||||
above that the highlighting cost was virtually eliminated in
|
||||
new-top, and these tests bare that out.
|
||||
|
||||
Note the much smaller differences for new-top between the 24x80
|
||||
window results and full screen (but don't mix apples_terminal
|
||||
with oranges_xterm). This is a reflection of the simplification
|
||||
of task row construction, also mentioned above.
|
||||
|
||||
It's always been the case that any top in an xterm outperforms
|
||||
that top under the terminal application, even when the xterm
|
||||
provides additional rows and columns. It's true below with
|
||||
Gnome and it was true nine years ago under KDE.
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comparisons were run with:
|
||||
100 tasks & 160 threads
|
||||
-d0 -n5000
|
||||
new-top old-top
|
||||
xterm 24x80
|
||||
a 1 win, lflgs_none 11.2 secs 51.8 secs + 462.6%
|
||||
1 win, default 61.0 secs 66.8 secs
|
||||
1 win, colors w/ x+y 61.3 secs 83.0 secs + 135.4%
|
||||
1 win, thread mode 88.3 secs 94.2 secs
|
||||
b 1 win, every field on 99.7 secs 106.0 secs
|
||||
1 win, cmdline 71.2 secs 76.6 secs
|
||||
4 wins, defaults 101.3 secs 107.2 secs
|
||||
4 wins, colors w/ x+y 101.5 secs 122.8 secs + 121.0%
|
||||
|
||||
xterm, full screen (53x170)
|
||||
a 1 win, lflgs_none 15.9 secs 54.2 secs + 340.9%
|
||||
1 win, default 70.0 secs 73.2 secs
|
||||
1 win, colors w/ x+y 69.4 secs 131.3 secs + 189.2%
|
||||
1 win, thread mode 97.6 secs 102.6 secs
|
||||
c 1 win, every field on 122.1 secs 128.1 secs
|
||||
1 win, cmdline 80.8 secs 83.7 secs
|
||||
4 wins, defaults 111.4 secs 115.8 secs
|
||||
4 wins, colors w/ x+y 112.0 secs 172.9 secs + 154.4%
|
||||
|
||||
terminal 24x80
|
||||
a 1 win, lflgs_none 8.9 secs 58.6 secs + 658.4%
|
||||
1 win, default 70.1 secs 80.3 secs
|
||||
1 win, colors w/ x+y 70.6 secs 157.3 secs + 222.8%
|
||||
1 win, thread mode 104.7 secs 120.5 secs
|
||||
b 1 win, every field on 111.2 secs 134.5 secs
|
||||
1 win, cmdline 83.8 secs 94.5 secs
|
||||
4 wins, defaults 125.6 secs 146.7 secs
|
||||
4 wins, colors w/ x+y 125.6 secs 206.9 secs + 176.7%
|
||||
|
||||
terminal, full screen (39x125)
|
||||
a 1 win, lflgs_none 9.1 secs 60.6 secs + 665.9%
|
||||
1 win, default 74.3 secs 88.0 secs
|
||||
1 win, colors w/ x+y 73.9 secs 314.5 secs + 425.6%
|
||||
1 win, thread mode 113.0 secs 140.9 secs
|
||||
b 1 win, every field on 117.7 secs 154.9 secs
|
||||
1 win, cmdline 87.4 secs 107.2 secs
|
||||
4 wins, defaults 139.1 secs 166.7 secs
|
||||
4 wins, colors w/ x+y 157.3 secs 423.2 secs + 269.0%
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comarisons were run with:
|
||||
300 tasks & 360 threads
|
||||
-d0 -n3000
|
||||
new-top old-top
|
||||
xterm, full screen (53x170)
|
||||
a 1 win, lflgs_none 14.3 secs 79.0 secs + 552.4%
|
||||
1 win, default 101.1 secs 104.5 secs
|
||||
1 win, colors w/ x+y 101.3 secs 140.0 secs + 138.2%
|
||||
1 win, thread mode 120.1 secs 123.1 secs
|
||||
c 1 win, every field on 179.8 secs 185.6 secs
|
||||
1 win, cmdline 124.9 secs 132.8 secs
|
||||
4 wins, defaults 174.8 secs 179.2 secs
|
||||
4 wins, colors w/ x+y 175.0 secs 215.2 secs + 123.0%
|
||||
|
||||
terminal, full screen (39x125)
|
||||
a 1 win, lflgs_none 12.3 secs 98.5 secs + 800.8%
|
||||
1 win, default 117.4 secs 134.0 secs
|
||||
1 win, colors w/ x+y 111.6 secs 296.1 secs + 265.3%
|
||||
1 win, thread mode 141.3 secs 155.3 secs
|
||||
b 1 win, every field on 197.7 secs 204.8 secs
|
||||
1 win, cmdline 143.9 secs 157.3 secs
|
||||
4 wins, defaults 204.0 secs 226.2 secs
|
||||
4 wins, colors w/ x+y 216.9 secs 434.5 secs + 200.3%
|
||||
|
||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
notes:
|
||||
a these results represent the library flags L_NONE zero value and
|
||||
thus the hidden cost of rebuilding column headers w/ every frame
|
||||
b while every common field was turned on, not all fields could be
|
||||
displayed due to limited screen width
|
||||
c only in a full screen xterm window could all common fields
|
||||
actually be displayed
|
||||
|
||||
|
||||
BENCHMARKS, Redux (for NLS) ==============================================
|
||||
December, 2011 benchmarks produced on a much more modern
|
||||
platform containing:
|
||||
Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
|
||||
SMP with 4 cpus
|
||||
reflected in the substantially reduced elapsed times.
|
||||
|
||||
Tested as root with nice -10 and using only common fields
|
||||
but rcfiles specified identical sort fields and identical
|
||||
settings for the 'B', 'b', 'x' and 'y' toggles (even though
|
||||
the defaults are not necessarily identical).
|
||||
|
||||
Each test was run outside of X-windows at a linux console
|
||||
offering 48 rows and 170 columns. This was done to reduce
|
||||
contention which sometimes made comparisons problematic.
|
||||
|
||||
old-top = procps-3.2.8 (debian patched and memory leaking)
|
||||
new-top = procps-ng-3.3.2 with NLS support
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comparisons were run with
|
||||
-d0 -n5000
|
||||
140 tasks & 275 threads
|
||||
|
||||
linux console (48x170) new-top old-top
|
||||
d 1 win, lflgs_none 2.6 secs 15.0 secs + 577.0%
|
||||
1 win, default 16.1 secs 19.3 secs
|
||||
1 win, colors w/ x+y 16.6 secs 35.0 secs + 210.8%
|
||||
e 1 win, show cpus 16.2 secs 20.1 secs + 124.1%
|
||||
1 win, thread mode 31.8 secs 34.1 secs
|
||||
f 1 win, every field on 30.5 secs 34.0 secs
|
||||
1 win, cmdline 19.9 secs 23.1 secs
|
||||
4 wins, default 31.9 secs 35.2 secs
|
||||
4 wins, colors w/ x+y 29.2 secs 47.4 secs + 162.3%
|
||||
g 1 win, b&w w/ bold x 30.0 secs 33.2 secs
|
||||
h 1 win, scroll msg on 31.1 secs 33.9 secs
|
||||
|
||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
notes:
|
||||
d these represent the same anamoly as the original 'a' footnote
|
||||
e these represent the '1' toggle, where each of 4 cpus was shown
|
||||
(not possible on the original uniprocessor)
|
||||
f every common field was turned on and all fields were visible
|
||||
g on a black and white display, sort column was shown in bold
|
||||
(further proof of column highlighting improvements)
|
||||
h similar to 'g', but new top was showing scroll msg
|
||||
(old top has no such provision)
|
@ -1,78 +0,0 @@
|
||||
diff -Naur procps-ng-3.3.10.orig/proc/sysinfo.c procps-ng-3.3.10/proc/sysinfo.c
|
||||
--- procps-ng-3.3.10.orig/proc/sysinfo.c 2014-09-23 13:40:36.000000000 +0200
|
||||
+++ procps-ng-3.3.10/proc/sysinfo.c 2016-01-14 13:46:42.710000000 +0100
|
||||
@@ -36,6 +36,9 @@
|
||||
#include <netinet/in.h> /* htons */
|
||||
#endif
|
||||
|
||||
+#include <link.h>
|
||||
+#include <elf.h>
|
||||
+
|
||||
long smp_num_cpus; /* number of CPUs */
|
||||
long page_bytes; /* this architecture's page size */
|
||||
|
||||
@@ -249,14 +252,58 @@
|
||||
|
||||
extern char** environ;
|
||||
|
||||
-/* for ELF executables, notes are pushed before environment and args */
|
||||
-static unsigned long find_elf_note(unsigned long findme){
|
||||
+static unsigned long find_elf_note(unsigned long type)
|
||||
+{
|
||||
+ ElfW(auxv_t) auxv_struct;
|
||||
+ ElfW(auxv_t) *auxv_temp;
|
||||
+ FILE *fd;
|
||||
+ int i;
|
||||
+ static ElfW(auxv_t) *auxv = NULL;
|
||||
unsigned long *ep = (unsigned long *)environ;
|
||||
- while(*ep++);
|
||||
- while(*ep){
|
||||
- if(ep[0]==findme) return ep[1];
|
||||
- ep+=2;
|
||||
+
|
||||
+ if(!auxv) {
|
||||
+
|
||||
+ fd = fopen("/proc/self/auxv", "rb");
|
||||
+
|
||||
+ if(!fd) { // can't open auxv? that could be caused by euid change
|
||||
+ // ... and we need to fall back to the old and unsafe
|
||||
+ // ... method that doesn't work when calling library
|
||||
+ // ... functions with dlopen -> FIXME :(
|
||||
+
|
||||
+ while(*ep++); // for ELF executables, notes are pushed
|
||||
+ while(*ep){ // ... before environment and args
|
||||
+ if(ep[0]==type) return ep[1];
|
||||
+ ep+=2;
|
||||
+ }
|
||||
+ return NOTE_NOT_FOUND;
|
||||
+ }
|
||||
+
|
||||
+ auxv = (ElfW(auxv_t) *) malloc(getpagesize());
|
||||
+ if (!auxv) {
|
||||
+ perror("malloc");
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+
|
||||
+ i = 0;
|
||||
+ do {
|
||||
+ fread(&auxv_struct, sizeof(ElfW(auxv_t)), 1, fd);
|
||||
+ auxv[i] = auxv_struct;
|
||||
+ i++;
|
||||
+ } while (auxv_struct.a_type != AT_NULL);
|
||||
+
|
||||
+ fclose(fd);
|
||||
+
|
||||
}
|
||||
+
|
||||
+ auxv_temp = auxv;
|
||||
+ i = 0;
|
||||
+ do {
|
||||
+ if(auxv_temp[i].a_type == type) {
|
||||
+ return (unsigned long)auxv_temp[i].a_un.a_val;
|
||||
+ }
|
||||
+ i++;
|
||||
+ } while (auxv_temp[i].a_type != AT_NULL);
|
||||
+
|
||||
return NOTE_NOT_FOUND;
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 4e7f42375a9aa860365e6007a53a357df60964f1 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Thu, 9 Jul 2015 22:12:10 +1000
|
||||
Subject: [PATCH] build-sys: use merged systemd library
|
||||
|
||||
Since systemd 209 released in Feb 2014 three systemd libraries
|
||||
including systemd-login have been merged. This change merely
|
||||
checks for, and links to, the new library.
|
||||
|
||||
References:
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-February/017146.html
|
||||
https://bugs.debian.org/731256
|
||||
---
|
||||
configure.ac | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 612097f..48d4a59 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -150,10 +150,10 @@ AC_ARG_WITH([systemd],
|
||||
[], [with_systemd=no]
|
||||
)
|
||||
if test "x$with_systemd" != xno; then
|
||||
- PKG_CHECK_MODULES([SYSTEMD], [libsystemd-login >= 206], [], [
|
||||
- AC_CHECK_LIB(systemd-login, sd_pid_get_slice, [have_systemd=yes], [have_systemd=no])
|
||||
+ PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [], [
|
||||
+ AC_CHECK_LIB(systemd, sd_pid_get_slice, [have_systemd=yes], [have_systemd=no])
|
||||
if test "x$have_systemd" = xno; then
|
||||
- AC_MSG_ERROR([systemd support missing/incomplete (requires >= 206)])
|
||||
+ AC_MSG_ERROR([systemd support missing/incomplete (requires >= 209)])
|
||||
fi
|
||||
SYSTEMD_LIBS="-lsystemd-login"
|
||||
])
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,115 +0,0 @@
|
||||
diff --git a/top/top.c b/top/top.c
|
||||
index 39c8545..ce63508 100644
|
||||
--- a/top/top.c
|
||||
+++ b/top/top.c
|
||||
@@ -3524,8 +3524,9 @@ static void configs_read (void) {
|
||||
case 'g': // from 3.3.4 thru 3.3.8
|
||||
scat(w->rc.fieldscur, RCF_PLUS_H);
|
||||
case 'h': // this is release 3.3.9
|
||||
- /* w->rc.graph_cpus = 0; */// for documentation only, since
|
||||
- /* w->rc.graph_mems = 0; */// DEF_RCFILE zeroes them for us
|
||||
+ w->rc.graph_cpus = w->rc.graph_mems = 0;
|
||||
+ // these next 2 are really global, but best documented here
|
||||
+ Rc.summ_mscale = Rc.task_mscale = SK_Kb;
|
||||
case 'i': // actual RCF_VERSION_ID
|
||||
default: // and a future version?
|
||||
if (strlen(w->rc.fieldscur) != sizeof(DEF_FIELDS) - 1)
|
||||
@@ -4894,27 +4895,36 @@ static void keys_xtra (int ch) {
|
||||
* ( plus, maintain alphabetical order with carefully chosen )
|
||||
* ( function names: forest_a, forest_b, forest_c & forest_d )
|
||||
* ( each with exactly one letter more than its predecessor! ) */
|
||||
-static proc_t **Seed_ppt; // temporary window ppt ptr
|
||||
-static proc_t **Tree_ppt; // resized by forest_create
|
||||
-static int Tree_idx; // frame_make initializes
|
||||
+static proc_t **Seed_ppt; // temporary win ppt pointer
|
||||
+static proc_t **Tree_ppt; // forest_create will resize
|
||||
+static int Tree_idx; // frame_make resets to zero
|
||||
|
||||
/*
|
||||
* This little recursive guy is the real forest view workhorse.
|
||||
* He fills in the Tree_ppt array and also sets the child indent
|
||||
* level which is stored in an unused proc_t padding byte. */
|
||||
-static void forest_adds (const int self, const int level) {
|
||||
+static void forest_adds (const int self, int level) {
|
||||
int i;
|
||||
|
||||
- Tree_ppt[Tree_idx] = Seed_ppt[self]; // add this as root or child
|
||||
- Tree_ppt[Tree_idx++]->pad_3 = level; // borrow 1 byte, 127 levels
|
||||
- for (i = self + 1; i < Frame_maxtask; i++) {
|
||||
- if (Seed_ppt[self]->tid == Seed_ppt[i]->tgid
|
||||
- || (Seed_ppt[self]->tid == Seed_ppt[i]->ppid && Seed_ppt[i]->tid == Seed_ppt[i]->tgid))
|
||||
- forest_adds(i, level + 1); // got one child any others?
|
||||
+ if (Tree_idx < Frame_maxtask) { // immunize against insanity
|
||||
+ if (level > 100) level = 101; // our arbitrary nests limit
|
||||
+ Tree_ppt[Tree_idx] = Seed_ppt[self]; // add this as root or child
|
||||
+ Tree_ppt[Tree_idx++]->pad_3 = level; // borrow 1 byte, 127 levels
|
||||
+#ifdef TREE_SCANALL
|
||||
+ for (i = 0; i < Frame_maxtask; i++) {
|
||||
+ if (i == self) continue;
|
||||
+#else
|
||||
+ for (i = self + 1; i < Frame_maxtask; i++) {
|
||||
+#endif
|
||||
+ if (Seed_ppt[self]->tid == Seed_ppt[i]->tgid
|
||||
+ || (Seed_ppt[self]->tid == Seed_ppt[i]->ppid && Seed_ppt[i]->tid == Seed_ppt[i]->tgid))
|
||||
+ forest_adds(i, level + 1); // got one child any others?
|
||||
+ }
|
||||
}
|
||||
} // end: forest_adds
|
||||
|
||||
|
||||
+#ifndef TREE_SCANALL
|
||||
/*
|
||||
* Our qsort callback to order a ppt by the non-display start_time
|
||||
* which will make us immune from any pid, ppid or tgid anomalies
|
||||
@@ -4924,6 +4934,7 @@ static int forest_based (const proc_t **x, const proc_t **y) {
|
||||
if ( (*x)->start_time < (*y)->start_time ) return -1;
|
||||
return 0;
|
||||
} // end: forest_based
|
||||
+#endif
|
||||
|
||||
|
||||
/*
|
||||
@@ -4941,7 +4952,9 @@ static void forest_create (WIN_t *q) {
|
||||
hwmsav = Frame_maxtask;
|
||||
Tree_ppt = alloc_r(Tree_ppt, sizeof(proc_t*) * hwmsav);
|
||||
}
|
||||
+#ifndef TREE_SCANALL
|
||||
qsort(Seed_ppt, Frame_maxtask, sizeof(proc_t*), (QFP_t)forest_based);
|
||||
+#endif
|
||||
for (i = 0; i < Frame_maxtask; i++) // avoid any hidepid distortions
|
||||
if (!Seed_ppt[i]->pad_3) // identify real or pretend trees
|
||||
forest_adds(i, 1); // add as parent plus its children
|
||||
@@ -4962,7 +4975,8 @@ static inline const char *forest_display (const WIN_t *q, const proc_t *p) {
|
||||
const char *which = (CHKw(q, Show_CMDLIN)) ? *p->cmdline : p->cmd;
|
||||
|
||||
if (!CHKw(q, Show_FOREST) || 1 == p->pad_3) return which;
|
||||
- snprintf(buf, sizeof(buf), "%*s%s", 4 * (p->pad_3 - 1), " `- ", which);
|
||||
+ if (p->pad_3 > 100) snprintf(buf, sizeof(buf), "%400s%s", " + ", which);
|
||||
+ else snprintf(buf, sizeof(buf), "%*s%s", 4 * (p->pad_3 - 1), " `- ", which);
|
||||
return buf;
|
||||
} // end: forest_display
|
||||
|
||||
diff --git a/top/top.h b/top/top.h
|
||||
index 8f61d82..1b1b1a1 100644
|
||||
--- a/top/top.h
|
||||
+++ b/top/top.h
|
||||
@@ -59,6 +59,7 @@
|
||||
//#define STRINGCASENO /* case insenstive compare/locate versions */
|
||||
//#define TERMIOS_ONLY /* just limp along with native input only */
|
||||
//#define TREE_NORESET /* sort keys do NOT force forest view OFF */
|
||||
+//#define TREE_SCANALL /* rescan array w/ forest view, avoid sort */
|
||||
//#define USE_X_COLHDR /* emphasize header vs. whole col, for 'x' */
|
||||
//#define VALIDATE_NLS /* validate the integrity of all nls tbls */
|
||||
|
||||
@@ -780,8 +781,10 @@ typedef struct WIN_t {
|
||||
//atic void keys_window (int ch);
|
||||
//atic void keys_xtra (int ch);
|
||||
/*------ Forest View support -------------------------------------------*/
|
||||
-//atic void forest_adds (const int self, const int level);
|
||||
+//atic void forest_adds (const int self, int level);
|
||||
+#ifndef TREE_SCANALL
|
||||
//atic int forest_based (const proc_t **x, const proc_t **y);
|
||||
+#endif
|
||||
//atic void forest_create (WIN_t *q);
|
||||
//atic inline const char *forest_display (const WIN_t *q, const proc_t *p);
|
||||
/*------ Main Screen routines ------------------------------------------*/
|
@ -3,22 +3,24 @@
|
||||
|
||||
Summary: System and process monitoring utilities
|
||||
Name: procps-ng
|
||||
Version: 3.3.10
|
||||
Release: 18%{?dist}
|
||||
Version: 3.3.12
|
||||
Release: 1%{?dist}
|
||||
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
||||
Group: Applications/System
|
||||
URL: https://sourceforge.net/projects/procps-ng/
|
||||
|
||||
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
|
||||
|
||||
Patch0: procps-ng-3.3.10-top-fix-deep-forking-forest-crash.patch
|
||||
Patch1: procps-ng-3.3.10-find_elf_note-memory-error-fix.patch
|
||||
Patch2: procps-ng-3.3.10-libsystemd.patch
|
||||
# README files are missing in latest tarball
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/README.md
|
||||
Source1: README.md
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/top/README.top
|
||||
Source2: README.top
|
||||
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gettext-devel
|
||||
BuildRequires: systemd-devel
|
||||
|
||||
@ -84,10 +86,9 @@ Internationalization pack for procps-ng
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}
|
||||
cp -p %{SOURCE1} .
|
||||
cp -p %{SOURCE2} top/
|
||||
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
|
||||
%build
|
||||
# The following stuff is needed for git archives only
|
||||
@ -132,7 +133,7 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files
|
||||
%doc AUTHORS Documentation/BUGS Documentation/FAQ NEWS README top/README.top Documentation/TODO
|
||||
%doc AUTHORS Documentation/bugs.md Documentation/FAQ NEWS README.md top/README.top Documentation/TODO
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING COPYING.LIB
|
||||
%{_libdir}/libprocps.so.*
|
||||
@ -143,7 +144,6 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%{_mandir}/man5/*
|
||||
%{_mandir}/*/man1/*
|
||||
%{_mandir}/*/man8/*
|
||||
%{_mandir}/*/man5/*
|
||||
|
||||
%exclude %{_libdir}/libprocps.la
|
||||
%exclude /unwanted/*
|
||||
@ -159,6 +159,9 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%files i18n -f %{name}.lang
|
||||
|
||||
%changelog
|
||||
* Wed Feb 21 2018 Michael Cronenworth <mike@cchtml.com> - 3.3.12-1
|
||||
- Upgrading to 3.3.12
|
||||
|
||||
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.3.10-18
|
||||
- Escape macros in %%changelog
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user