]> granicus.if.org Git - procps-ng/log
procps-ng
9 years agolibrary: rework namespace calls
Craig Small [Thu, 3 Sep 2015 12:32:19 +0000 (22:32 +1000)]
library: rework namespace calls

Functions related to namespaces were half-in half-out of the
procps library and didn't fit the standard naming scheme.

While struct { long ns[x]} is a bit clunky, its the only way
to "lock in" x. The alternative is to use ns_* variables.

This work was needed before pgrep could be converted.

9 years agoskill: Remove unrequired headers
Craig Small [Tue, 1 Sep 2015 12:19:34 +0000 (22:19 +1000)]
skill: Remove unrequired headers

Removed unrequired headers in the include statements for skill.

9 years agosysctl: Remove links to library
Craig Small [Tue, 1 Sep 2015 10:57:56 +0000 (20:57 +1000)]
sysctl: Remove links to library

sysctl doesn't use any symbols from the libprocps library so
this  update removes those dependencies.

9 years agolibrary: Remove tty_to_dev()
Craig Small [Tue, 1 Sep 2015 10:41:25 +0000 (20:41 +1000)]
library: Remove tty_to_dev()

This library call was imported into w as it was only used in
this program.  Converting a tty to a device is not really the
work for libprocps.

9 years agow: use the new procps_pids library interface
Craig Small [Mon, 31 Aug 2015 12:49:11 +0000 (22:49 +1000)]
w: use the new procps_pids library interface

w using the new procps_pids calls from the library. There are
some clean-ups of the code within w as well.

9 years agolibrary: beef up 'enum pids_item' parameter validation
Jim Warner [Sun, 30 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: beef up 'enum pids_item' parameter validation

I was surprised to find that ol' gcc silently converts
a single (different) enum into an address where one or
more enums were expected to be dereferenced. Of course
this was just yet another way to generate an old SEGV.

So this commit will strengthen those parameter checks.

[ we will *not* blame Craig for a failure to consult ]
[ the documentation, since it doesn't even exist yet ]

Reference(s):
http://www.freelists.org/post/procps/newlib-ps-fix,8

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agopmap: modify to utilize that new procps_pids interface
Jim Warner [Sat, 29 Aug 2015 05:00:00 +0000 (00:00 -0500)]
pmap: modify to utilize that new procps_pids interface

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agopmap: silence a clang -Wuninitialized variable warning
Jim Warner [Sat, 29 Aug 2015 05:00:00 +0000 (00:00 -0500)]
pmap: silence a clang -Wuninitialized variable warning

Reference(s):
pmap.c:618:20: warning: variable 'start' is uninitialized when used here [-Wuninitialized]
                                               maxw1, start,
                                                      ^~~~~
Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agopmap: correct heading misalignment of VmFlags with -XX
Jim Warner [Sat, 29 Aug 2015 05:00:00 +0000 (00:00 -0500)]
pmap: correct heading misalignment of VmFlags with -XX

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: polish some things related to the pids adaptation
Jim Warner [Fri, 28 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: polish some things related to the pids adaptation

A patch containing the following miscellaneous tweaks:

. exploit (actually adapt) a pids.h provided VAL macro
. remove some obsolete, now unused, sort related items
. clarify the comment for specialized extractor macros

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: accumulated changes to <pids> code & comments
Jim Warner [Fri, 28 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: accumulated changes to <pids> code & comments

A patch containing the following miscellaneous tweaks:

. avoided distortions unique to PROCPS_PIDS_TICS_DELTA
. addressed several smatch warnings and/or suggestions
. ensured oldproc_close invoked should tally_proc fail
. keeping that namespace clean, added a missing #undef
. added 2 comments acknowledging pids_item as unsigned
. added/clarified comments regarding proc flags & strv

From smatch analysis:
. these were indeed boo-boos
pids.c:580 make_hist() warn: the 'Hr' macro might need parens
pids.c:1058 procps_pids_reap() warn: variable dereferenced before check 'info' (see line 1056)
. these were not errors (and we did double check)
pids.c:1067 procps_pids_reap() warn: double check that we're allocating correct size: 8 vs 128
pids.c:1068 procps_pids_reap() warn: double check that we're allocating correct size: 8 vs 128

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agopidof: modify to utilize the new procps_pids interface
Jim Warner [Wed, 26 Aug 2015 05:00:00 +0000 (00:00 -0500)]
pidof: modify to utilize the new procps_pids interface

As an additional test of the viability of the new pids
API, the pidof program has now been converted. As part
of that effort, several library changes were prompted:

. individual reads were added as an alternative to the
all encompassing (maybe over broad?) 'reap' provision.

. an alternate version of cgroup, cmdline plus environ
has been added to represent actual vectorized strings.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: introduce pids 'value extractor' helper macro
Jim Warner [Wed, 26 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: introduce pids 'value extractor' helper macro

As an experiment a helper macro used to extract values
from a result stack has been added to the header file.

Don't force callers to reinvent that particular wheel.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add real string vectors to the pids interface
Jim Warner [Wed, 26 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: add real string vectors to the pids interface

After experimenting with an adaptation of pidof to the
new pids interface, it became apparent that vectorized
versions of those command lines would be necessary. So
this commit adds that option and the strv result type.

And since the stage had been set, a vectorized version
of PROCPS_PIDS_ENVIRON & PROCPS_PIDS_CGROUP was added.

Lastly, any use of 'const' in the result structure was
removed so callers need not be bothered with casts and
compiler warnings. Hopefully, they'll respect a stack.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add sequential access to that pids collection
Jim Warner [Wed, 26 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: add sequential access to that pids collection

To ease the transition to the new interface, for other
than that top program, individual read provisions have
been added to the <proc/pids.h> API. This represents a
refinement of a position stated in a post noted below.

Reference(s):
http://www.freelists.org/post/procps/newlib-ps-fix

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: fix major oops in procps_pids_reap() function
Jim Warner [Wed, 26 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: fix major oops in procps_pids_reap() function

In my zeal to finalize the initial pids implementation
I omitted some quite important parameter checking from
the above function. Thank goodness top was kind to us.

Also, in anticipation of the additions of single stack
read and supporting functions some items were renamed.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: respond to library changes regarding self lookups
Jim Warner [Sun, 23 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: respond to library changes regarding self lookups

Just in case, make the old proc_t used in the before()
function static so valgrind doesn't get his panties in
a bunch over the fact the 'cmd' is now dynamic memory.

[ Shouldn't that function, or an equivalent, also be ]
[ part of our new library's implementation? However, ]
[ is it proper for a brand new library to abnormally ]
[ terminate a calling process with a stderr message? ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: revert changes to 'look_up_our_self' function
Jim Warner [Sun, 23 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: revert changes to 'look_up_our_self' function

The patch below is where most proc_t fixed size arrays
became simple pointers to char. In that commit changes
to the above function were made so that dynamic memory
was freed which included the program name (cmd) field.

That change was prompted by a valgrind reported memory
leak during development that no longer seems to exist.
However, by keeping the look_up_our_self() changes the
ps command without args then fails to report anything.

So this patch just restores the expected old behavior.

Reference(s):
commit 3881a0844afe4d1b3cd512b2c2fd79e11bb0ed06

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agobuild, library & top: make OOMEM options unconditional
Jim Warner [Fri, 21 Aug 2015 05:00:00 +0000 (00:00 -0500)]
build, library & top: make OOMEM options unconditional

It was probably always wrong to have a variable length
proc_t structure. This patch takes all remaining oomem
former suse only options and makes them unconditional.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: misc tweaks to code/comments after pid adaptation
Jim Warner [Thu, 20 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: misc tweaks to code/comments after pid adaptation

. didn't need a separate table for enum pids_reap_type
since top's 'Thread_mode' itself can be used directly.

. with pids support & the loss of forest_based(), that
forest_adds() function had to be renamed so the prolog
comment regarding naming convention was still honored.

. adapted to a library change to the pids_reap struct.

Signed-off-by: Jim Warner <james.warner@comcast.net>
TOP, respond to library change to the pids_reap struct ...

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: miscellaneous tweaks to pid code and comments
Jim Warner [Thu, 20 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: miscellaneous tweaks to pid code and comments

. traded a complex misaligned memory allocation scheme
in the make_hist function for a simple aligned scheme.
plus memory allocation increases are globally defined.

. changed 1 parameter for procps_pids_stacks_sort() to
better reflect the 'array of pointers', not an address
of a pointer as is used with guys such as 'new/unref'.

. the pids_reap struct was changed slightly to make it
more reflective of it's actual implementation details.

. the Item_table member .mustfree is now .needfree and
that .makehist was now made .needhist for consistency.

. reduced the number of separate 'return NULL;' source
statements in that primary procps_pids_reap() routine.

. ensured consistent reference to sizeof(void *) & not
occasional reference to sizeof(void*) without a space.

. rather than enable/disable validate_stacks via a #if
in the function body, it is now handled via a #define.

. some comments in the procps_pids_reset function were
adjusted to reflect this current implementation. shown
originally, they reflected an aborted attempt to avoid
a testing aberration not fully understood at the time.

. added a summary of the memory overhead cost of HST_t
processing to that UNREF_RPTHASH output at unref time.

. a 'PIDs at max depth:' portion of that UNREF_RPTHASH
enabled #define is now published only when the maximum
depth of hash table entry chains exceed depths of one.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: eliminated old kernel-2.4 & 2.5 support (man too)
Jim Warner [Wed, 19 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: eliminated old kernel-2.4 & 2.5 support (man too)

The newlib informal cutoff for kernel support seems to
be around release 2.6. This commit eliminates any such
support for really old 2.4 and 2.5 kernels within top.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: exploit those new library task/threads provisions
Jim Warner [Wed, 19 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: exploit those new library task/threads provisions

This patch adapts top to exploit the new <proc/pids.h>
interface. And it appears to have reduced top's weight
by a considerable margin. Gone were the sort callbacks
and manipulation of those library flags. Gosh, all top
needs to do now is track some enumerators of interest.

[ whoa, wait just a damn minute. it now appears some ]
[ that weight loss was solely the result of a theft. ]

[ jeeze, we turn our back for just a minute & newlib ]
[ up & steals our pids hashing logic for his history ]
[ needs. oh well, i guess life's just not that fair. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: implement task/thread support via the new api
Jim Warner [Wed, 19 Aug 2015 05:00:00 +0000 (00:00 -0500)]
library: implement task/thread support via the new api

This commit is the culmination of efforts to modernize
the library api. It should be treated as a first blush
attempt, especially since I have absolutely no library
design experience. But I did have a very strong desire
to lessen the new library's impact on the top program.

Under this new api, a 'stack' is the equivalent of the
old proc_t. It can be seen as a variable length record
whose contents & order is under complete user control.

That initial stack/record configuration is established
at procps_pids_new() time and will probably serve most
program needs. But, a dynamic & demanding program like
top will later change a stack via procps_pids_reset().

For programs like top & ps, procps_pids_reap() will be
the function that will retrieve all tasks and threads.

Any program that needs to filter / select only certain
processes or users have available other functions that
can be used: procps_pids_stacks_alloc, fill & dealloc.

This implementation attempts to maximize that existing
proven libprocps code base. As we gain more experience
such actual code can be migrated into the pids.c file.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agoold library: just some tweaks for transition to newlib
Jim Warner [Wed, 19 Aug 2015 05:00:00 +0000 (00:00 -0500)]
old library: just some tweaks for transition to newlib

A few minor changes are being made to position the old
readproc logic for a transition to the newlib pid api.

These changes will not impact current users beyond the
the need to recompile such code. Hopefully this should
be very last version change to the deprecated library.

. most char arrays were replaced via char * to dynamic
memory. this was done so that newlib could just assume
ownership of such strings without using a strdup call.

. former user and group name arrays also became char *
but here the reason was because pwcache already cached
those names. so, copying to an array never made sense.

. the concept of QUICK_THREADS used to avoid duplicate
overhead for string data was disabled. it could not be
integrated with the newlib design, at least initially.

. any #define which influenced the size of that proc_t
was disable in the header. it was probably a poor idea
to approach optional features in such a manner anyway.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: fix unlikely edge case wherein all fields are off
Jim Warner [Mon, 3 Aug 2015 05:00:00 +0000 (00:00 -0500)]
top: fix unlikely edge case wherein all fields are off

While testing a newlib interface for pids acquisitions
I encountered some unexpected results if an idiot user
(me) turns off all displayable fields. So, this commit
ensures that the PID field will be shown as a minimum.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: avoid an unnecessary conversion for 'USED' column
Jim Warner [Sat, 1 Aug 2015 15:52:20 +0000 (10:52 -0500)]
top: avoid an unnecessary conversion for 'USED' column

When the USED column was introduced the proc_t.vm_swap
& proc_t.resident values were added together. However,
using 'resident' required an additional PROC_FILL flag
not to mention extra conversion of pages to kibibytes.

So now we'll use an already present vm_rss value which
removes any special handling for top's derived column.

And while we're at it we'll trade some more 'resident'
field uses with that more immediately usable 'vm_rss'.

[ this commit has been adapted for the newlib branch ]

Reference(s):
commit 709785e20bd19dc28546d19c45bb7444a56f88b9

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: miscellaneous accumulated tweaks to code/comments
Jim Warner [Mon, 27 Jul 2015 05:00:00 +0000 (00:00 -0500)]
top: miscellaneous accumulated tweaks to code/comments

Jeeze, to correct spelling on one single word (incure)
you had to go and align the entire comments paragraph?

[ well, at least there's one other minor code change ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: eliminate 'user' from the inspection view headers
Jim Warner [Mon, 27 Jul 2015 05:00:00 +0000 (00:00 -0500)]
top: eliminate 'user' from the inspection view headers

Since it's possible that euser name is not being shown
or the horizontal position had been scrolled past that
USER column, then part of those headers will be blank.

So it doesn't make sense to try and show the USER that
is associated with a process at all. Thus, this commit
simply removes the 'user' provision from both headers.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: minor tweaks of program logic and/or comments
Jim Warner [Thu, 23 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: minor tweaks of program logic and/or comments

This commit just corrects the oversight wherein 'item'
was being employed when 'these' was actually intended.

Also, it trades some 'item' use for a more descriptive
input parameter which henceforth is known as a 'dest'.

And, there was one leftover 'next' pointer eliminated.

Finally, some logic was made a tad less dependent upon
enumerator names and a few comments were also updated.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: improve vertical scroll management for 'i' toggle
Jim Warner [Sun, 12 Jul 2015 09:44:44 +0000 (04:44 -0500)]
top: improve vertical scroll management for 'i' toggle

When a user is taking advantage of the scroll features
it is likely a scrolled vertical position is well past
the first displayable task. That is especially true of
top's forest view ('V') mode where those early systemd
attached processes are generally not very interesting.

As such, should the idle mode toggle ('i') be employed
a distorted display is almost guaranteed because tasks
that have used some cpu, and thus should be displayed,
have already been skipped by virtue of their position.

So this patch temporarily nullifies vertical scrolling
during the period when idle tasks are not being shown.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: eliminate extra stack header space provisions
Jim Warner [Wed, 22 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: eliminate extra stack header space provisions

With the new perspective on potential uses of a 'noop'
enumerator (or whatever we decide to call it) there is
no longer a need to provide for any extra 'user' space
in the stack header structures used by slab & meminfo.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: vmstat redesign now using 'stack' vs. 'chain'
Jim Warner [Tue, 21 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: vmstat redesign now using 'stack' vs. 'chain'

In addition to that text shown below the line which is
common to several commit messages, this patch contains
several minor changes with lessor impact upon the API:

. Standard copyright boilerplate was added in .c file.

. The #include header files are ordered alphabetically
now, with all those <sys/??> types separately grouped.

. The header file follows the conventions of indenting
(by 4 spaces) those parameters too lengthy for 1 line.

------------------------------------------------------
. The former 'chains' have now become 'stacks' without
the 'next' pointer in each result struct. The pointers
initially seemed to offer some flexibility with memory
allocations and benefits for the library access logic.
However, user access was always via displacement and a
a statically allocated chain was cumbersome to define.

. An enumerator ending in '_noop' will no longer serve
as a fencepost delimiter. Rather, it has become a much
more important and flexible user oriented tool. Adding
one or more such 'items' in any items list passed into
the library becomes the means of extending the 'stack'
to also include user (not just library) data. Any such
data is guaranteed to never be altered by the library.

. Anticipating PID support, where many different types
must be represented in a result structure, we'll adopt
a common naming standard. And, while not every results
structure currently needs to reflect disparate types a
union will be employed so the same dot qualifier ('.')
can be used consistently when accessing all such data.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: readstat redesigned using 'stack' vs. 'chain'
Jim Warner [Tue, 21 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: readstat redesigned using 'stack' vs. 'chain'

In addition to that text shown below the line which is
common to several commit messages, this patch contains
several minor changes with lessor impact upon the API:

. A call to procps_stat_read_jiffs() has been added to
those jiffs functions carrying the 'fill' nomenclature
to parallel like functions in some of our other files.

. The #include header files are ordered alphabetically
now, with all those <sys/??> types separately grouped.

. Standard copyright boilerplate was added in .c file.

. The header file follows the conventions of indenting
(by 4 spaces) those parameters too lengthy for 1 line.

------------------------------------------------------
. The former 'chains' have now become 'stacks' without
the 'next' pointer in each result struct. The pointers
initially seemed to offer some flexibility with memory
allocations and benefits for the library access logic.
However, user access was always via displacement and a
a statically allocated chain was cumbersome to define.

. An enumerator ending in '_noop' will no longer serve
as a fencepost delimiter. Rather, it has become a much
more important and flexible user oriented tool. Adding
one or more such 'items' in any items list passed into
the library becomes the means of extending the 'stack'
to also include user (not just library) data. Any such
data is guaranteed to never be altered by the library.

. Anticipating PID support, where many different types
must be represented in a result structure, we'll adopt
a common naming standard. And, while not every results
structure currently needs to reflect disparate types a
union will be employed so the same dot qualifier ('.')
can be used consistently when accessing all such data.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: slab is redesigned to use 'stack' vs. 'chain'
Jim Warner [Tue, 21 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: slab is redesigned to use 'stack' vs. 'chain'

In addition to that text shown below the line which is
common to several commit messages, this patch contains
several minor changes with lessor impact upon the API:

. A 'read' was added to function procps_slabnode_count
(but only when necessary, i.e. info->nodes_used == 0).

. The #include header files are ordered alphabetically
now, with all those <sys/??> types separately grouped.

------------------------------------------------------
. The former 'chains' have now become 'stacks' without
the 'next' pointer in each result struct. The pointers
initially seemed to offer some flexibility with memory
allocations and benefits for the library access logic.
However, user access was always via displacement and a
a statically allocated chain was cumbersome to define.

. An enumerator ending in '_noop' will no longer serve
as a fencepost delimiter. Rather, it has become a much
more important and flexible user oriented tool. Adding
one or more such 'items' in any items list passed into
the library becomes the means of extending the 'stack'
to also include user (not just library) data. Any such
data is guaranteed to never be altered by the library.

. Anticipating PID support, where many different types
must be represented in a result structure, we'll adopt
a common naming standard. And, while not every results
structure currently needs to reflect disparate types a
union will be employed so the same dot qualifier ('.')
can be used consistently when accessing all such data.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: meminfo redesigned to use 'stack' vs. 'chain'
Jim Warner [Tue, 21 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: meminfo redesigned to use 'stack' vs. 'chain'

In addition to that text shown below the line which is
common to several commit messages, this patch contains
the following additional change without an API impact:

. The #include header files are ordered alphabetically
now, with all those <sys/??> types separately grouped.

------------------------------------------------------
. The former 'chains' have now become 'stacks' without
the 'next' pointer in each result struct. The pointers
initially seemed to offer some flexibility with memory
allocations and benefits for the library access logic.
However, user access was always via displacement and a
a statically allocated chain was cumbersome to define.

. An enumerator ending in '_noop' will no longer serve
as a fencepost delimiter. Rather, it has become a much
more important and flexible user oriented tool. Adding
one or more such 'items' in any items list passed into
the library becomes the means of extending the 'stack'
to also include user (not just library) data. Any such
data is guaranteed to never be altered by the library.

. Anticipating PID support, where many different types
must be represented in a result structure, we'll adopt
a common naming standard. And, while not every results
structure currently needs to reflect disparate types a
union will be employed so the same dot qualifier ('.')
can be used consistently when accessing all such data.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: tests for sysinfo
Craig Small [Mon, 20 Jul 2015 12:23:21 +0000 (22:23 +1000)]
library: tests for sysinfo

First set of tests for the library API, this lot checks the two
functions out of sysinfo.c

Signed-off-by: Craig Small <csmall@enc.com.au>
9 years agolibrary: ensure the consistent handling of 'noop' enum
Jim Warner [Mon, 13 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: ensure the consistent handling of 'noop' enum

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: also include a 'read' for slabnode_chain_fill
Jim Warner [Mon, 13 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: also include a 'read' for slabnode_chain_fill

While meminfo does implement only the singular version
of 'xxxx_chain_fill', it was wrong to limit the 'read'
to the plural version (only) within our new slabs API.

This kind of inconsistency will only spell trouble for
future users of the new libprocps API. So, this commit
will mean that any form of xxxx_chain(s)_fill function
also includes a 'read', whereas xxx_getchain does not.

Reference(s):
commit aab537bc1333b9ca57eaeec073b51af12f9280f8
http://www.freelists.org/post/procps/newlib-interfaces

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: tweak new interface code and improve comments
Jim Warner [Mon, 13 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: tweak new interface code and improve comments

With a little help from smatch, this commit eliminates
some inappropriate code. Also some programmer comments
were (barely) improved (i hope) in some small measure.

Reference(s):
smatch: 406 procps_meminfo_chain_fill() warn: variable dereferenced before check 'chain' (see line 403)

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agovmstat: adapted to exploit the alloc & sort interfaces
Jim Warner [Sat, 11 Jul 2015 05:00:00 +0000 (00:00 -0500)]
vmstat: adapted to exploit the alloc & sort interfaces

In addition to exploiting the new interface, a warning
for a meminfo variable 'used uninitialized' was fixed.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agoslabtop: adapted to exploit new alloc & sort interface
Jim Warner [Sat, 11 Jul 2015 05:00:00 +0000 (00:00 -0500)]
slabtop: adapted to exploit new alloc & sort interface

In addition to the new interface several other changes
were made. In fact, there are so many I must apologize
in advance to Craig, et al. for the hatchet I wielded.

Among the changes was my attempt to shrink the body of
that main() function. It's amazing how some folks must
always cram as code much as possible into  ol' main().

Personally, unless it's a throwaway quick & dirty pgm,
all main function bodies should not exceed one screen.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: revised sort + new allocate APIs for slabinfo
Jim Warner [Sat, 11 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: revised sort + new allocate APIs for slabinfo

With this patch, we will be close to an implementation
which will be needed when accommodating tasks/threads.
The following explanation was from an earlier message:

The slabtop requirements are similar to those of PIDs.
One must accommodate the variable number of slab nodes
(PIDs) while also accepting different data (char * and
unsigned long). Furthermore, some generalized means to
sort all that acquired stuff must somehow be provided.
------------------------------------------------------

So this patch expands the API to provide dynamic chain
allocation plus allow sorting of those dynamic chains.
While specific to slab needs (nodes, not global stats)
it is not too early to begin to think of newlib chains
as the opaque replacement for a deprecated old proc_t.

Better yet, any newlib chain is inherently variable in
length, something the old proc_t couldn't claim to be.
Of course, as we get to PIDs we'll want to grow/shrink
chains (easily accomplished with a special item enum).
And we'll want to grow/shrink those **head arrays too.
But these minor details don't seem insurmountable now.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: exploit that meminfo dynamic chain allocation API
Jim Warner [Sat, 11 Jul 2015 05:00:00 +0000 (00:00 -0500)]
top: exploit that meminfo dynamic chain allocation API

The commit msg summary says it all (well, not really).

The previous statically allocated results chain served
the top program perfectly in all its lib memory needs.
But, someone needs to try out the brand new interface.

Besides, there were a few other changes which I wanted
to make. And among them were the following miscellany:

. some names were changed, like 'context' became 'ctx'

. an unnecessary redundant library call was eliminated

. the placement of a few globals was made more logical
( thanks Craig for following the capitalization rule )

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: refactor meminfo providing dynamic allocation
Jim Warner [Sat, 11 Jul 2015 05:00:00 +0000 (00:00 -0500)]
library: refactor meminfo providing dynamic allocation

An earlier approach to meminfo chaining, referenced in
the patch shown below, represents the first baby steps
toward the goal of some generalized approach with PIDs
processing. However, statically allocating a chain for
each task or thread is totally impractical. And, while
a single chain could serve all PIDs, that would mean a
separate call to our library for each running process.

This commit is intended as the next evolutionary step,
dynamically allocating some 'result' chains to contain
as many or as few 'items' as a caller wishes. In other
words, holding only those 'items' of current interest.

This is the kind of service useful for both top and ps
programs if we finally get around to /proc/<PID> data.

Reference(s):
commit c3fd7473c5e2f8be59b2ac90696e79079f45b5a8

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: rebase & make current initial slabinfo effort
Craig Small [Sat, 4 Jul 2015 04:59:59 +0000 (23:59 -0500)]
library: rebase & make current initial slabinfo effort

This was Craig's original patch, referenced below, but
it was never pushed to newlib. It has now been rebased
on top of some diskstat stuff to serve as a beginning.

The original effort was perfectly serviceable (after a
memory leak was fixed) but the approach would not have
served future PID needs when that proc_t went bye bye.

The slabtop requirements are similar to those of PIDs.
One must accommodate the variable number of slab nodes
(PIDs) while also accepting different data (char * and
unsigned long). Furthermore, some generalized means to
sort all that acquired stuff must somehow be provided.

So I wanted to try a different approach that seemed to
hold potential for satisfying future top and ps needs.
Subsequent commits will make that attempt, building on
Craig's original patch whose commit msg appears below.
------------------------------------------------------

All of the /proc/slabinfo related calls have been changed
here. They follow the same procps_slabinfo_* format.

Made both the slabtop and vmstat programs use the new
API as one was using the old one and one was just sort
of trying to do its own thing.

Sorting of slabnodes is also possible via the library.

Reference(s):
http://www.freelists.org/post/procps/Sorting-slabsprocesses,3
http://www.freelists.org/post/procps/library-rework-slabinfo-calls

Signed-off-by: Craig Small <csmall@enc.com.au>
Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: Update diskstat API
Craig Small [Tue, 7 Jul 2015 12:42:06 +0000 (22:42 +1000)]
library: Update diskstat API

The calls for reading diskstat have been moved out of
sysinfo and into new files diskstat.[ch] These new
library calls follow the standard pattern for the
new libprocps.

vmstat is updated to use the new API and also got
the weighted IO time added.

vmstat -p previously would only show partitions, not
disks. There does not appear to be any good reason to
artifically deny a user to use this command on a disk,
rather than a partition so this restriction was lifted.

I also realised using int for devid means you can send
the library negative numbers, the index uses unsigned int.
Other similiar calls will need to be fixed too.

Signed-off-by: Craig Small <csmall@enc.com.au>
9 years agolibrary: remove procps_pagesize_get()
Craig Small [Thu, 2 Jul 2015 10:54:11 +0000 (20:54 +1000)]
library: remove procps_pagesize_get()

This is actually a systemcall getpagesize(2) or it is defined
in configure using a variety of methods, including a default
hard coded value as a last resort.

There is no need to have this in libprocps

9 years agolibrary: remove getpartitions_num from library
Craig Small [Wed, 1 Jul 2015 12:14:30 +0000 (22:14 +1000)]
library: remove getpartitions_num from library

getpartitions_num was only used in vmstat and basically counted
partitions in disks, this is now moved to vmstat.

9 years agolibrary: cleanup unused old functions
Craig Small [Wed, 1 Jul 2015 12:08:02 +0000 (22:08 +1000)]
library: cleanup unused old functions

The old getstat and meminfo functions and their globals are
removed.

Also page_size is now a function, procps_pagesize_get()

9 years agolibrary: loadavg change to procps_loadavg
Craig Small [Wed, 1 Jul 2015 11:47:30 +0000 (21:47 +1000)]
library: loadavg change to procps_loadavg

9 years agotop: tweak newlib interface, as more experience gained
Jim Warner [Tue, 30 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: tweak newlib interface, as more experience gained

Now that the dust is settling following an initial API
library effort, it is apparent my naming standards may
not have always been observed. This was a minor crime,
since those standards are unwritten (& not apparent?).

Basically, top has always capitalized the first letter
of global variables in an effort to distinguish global
definitions from local variables later in the program.

So this patch alters the new API variables to conform,
while also explicitly using 'context' for key structs.

Lastly, top now employs the new '#include <proc/name>'
conventions for the new/converted module header files.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: normalize the readstat context structure name
Jim Warner [Tue, 30 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: normalize the readstat context structure name

The new library meminfo & vmstat modules use structure
names for their context which exactly mirror the names
of the very /proc/ files whose particulars they yield.

The one exception to this rule was the readstat module
whose struct was named statinfo yet the file was stat.

This commit simply renames that structure (only) so as
to hopefully establish such a naming convention as our
standard going forward. And, it's makes good symmetry.

[ this module's name itself is just perfect as it is ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: the uref functions were insufficiently robust
Jim Warner [Tue, 30 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: the uref functions were insufficiently robust

The earlier attempt at protecting these functions from
already freed memory worked just fine until the memory
was, in fact, reused by the OS. At that point, the ref
count would most likely fail an existing a test for 0.

So this commit will take control of the 'info' pointer
and force it to NULL when a reference count reaches 0.

Plus, since it makes little sense returning an address
that a caller already has, henceforth we will return a
reference count out of the 'ref' and 'unref functions.

Reference(s):
commit 74beff80ff3624761ecd20fafac0485f48c9c873

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: make recently added variable name more conforming
Jim Warner [Mon, 29 Jun 2015 16:31:42 +0000 (11:31 -0500)]
top: make recently added variable name more conforming

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agomisc: remove yet more darn trailing whitespace buildup
Jim Warner [Mon, 29 Jun 2015 16:16:52 +0000 (11:16 -0500)]
misc: remove yet more darn trailing whitespace buildup

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: Replace smp_num_cpu with function
Craig Small [Mon, 29 Jun 2015 12:31:36 +0000 (22:31 +1000)]
library: Replace smp_num_cpu with function

Instead of exposing a variable smp_num_cpus that is updated
with cpuinfo, use procps_cpu_count() which returns the same
value.

9 years agolibrary: Update uptime calls to standard format
Craig Small [Mon, 29 Jun 2015 12:09:59 +0000 (22:09 +1000)]
library: Update uptime calls to standard format

Changed all the uptime related functions to use the
standard naming procps_uptime_*

9 years agolibrary: Remove signal name from library
Craig Small [Mon, 29 Jun 2015 11:52:51 +0000 (21:52 +1000)]
library: Remove signal name from library

Procps library previously held functions that were about either
listing or finding signal names. These are not really the right
location for a library about reading procfs.

This patch handles signal related functions in two ways:

For functions purely found in skill, these have been moved back
into this binary as they are used nowhere else.

For functions used across the binaries, these have been moved
into include/signals.h and lib/signals.c. Besides formatting,
these functions are largely the same.

To assist the skill functions, two functions to access the
signal map array have been added to lib/signals.c

9 years agotop: exploit the new library API for cpu display needs
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: exploit the new library API for cpu display needs

This commit is mostly about eliminating code, now that
a library is responsible for the cpu tics maintenance.

The top program will continue to provide numa support,
without involving the library in any of those details.
[ not to mention all the 'dl' and 'stderr' numa crap ]

With this transfer of the cpu tics duty to our library
the provision associated with the CPU_ZEROTICS #define
could not initially be migrated. The commit referenced
below suggests it may have lost its importance. In any
case such logic may yet be incorporated in the future.
But for now, that #define has been completely removed.

Reference(s):
commit ee3ed4b45edd66c6e0455d3fab08a48e7ea83030

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: extend cpu jiff logic beyond cpu summary info
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: extend cpu jiff logic beyond cpu summary info

There was not a way I could see to support top's needs
for cpu information with the new 'chained' provisions.
The sheer quantity of such data plus the unpredictable
number of potential processors suggested a totally new
approach was warranted while keeping internals opaque.

So this patch introduces two new structures solely for
use by potential callers (as seen in the API). They're
responsible for providing them to the library which is
then responsible for filling them with requested data.

The top program will continue to provide numa support,
without involving the library in any of those details.
[ not to mention all the 'dl' and 'stderr' numa crap ]

With this transfer of the cpu tics duty to our library
the provision associated with the CPU_ZEROTICS #define
could not initially be migrated. The commit referenced
below suggests it may have lost its importance. In any
case such logic may yet be incorporated in the future.
But for now, that #define has been completely removed.

Reference(s):
commit ee3ed4b45edd66c6e0455d3fab08a48e7ea83030

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: make reads & unref logic a little more robust
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: make reads & unref logic a little more robust

Since we are not using a higher level standard C fopen
all of the read requests were made signal sensitive as
that can result in a 'temporarily' failed i/o request.

Also, protection against some user calling the 'unref'
function on already free memory has been incorporated.
This will protect us from some nasty 'Abort' surprise.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add chaining provisions to readstat cpu & sys
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: add chaining provisions to readstat cpu & sys

If a caller chooses to reduce the overhead of repeated
function calls, this commit provides for acquiring all
the desired information in just a single library call.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: tweak formatting for readstat header and code
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: tweak formatting for readstat header and code

This patch mostly just eliminates darn tab characters.

Plus the library function declarations and definitions
have been standardized. Most visibly, the input params
now have all been indented on their own separate line.

The following names were changed to more closely match
meminfo.c or provide a certain symmetry. Unfortunately
that also impacted some other pgms which were updated.

. 'procps_stat_get' evolved into 'procps_stat_get_sys'
. 'procps_stat_info' is now known as 'procps_statinfo'

[and just a little trailing whitespace was eliminated]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: exploit the new library API for memory statistics
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: exploit the new library API for memory statistics

This commit represents the pioneering attempt at using
the concept of 'chained' library requests in an effort
to reduce function call overhead. It required exposing
no more implementation details than were already shown
through the individual calls, yet is satisfied in one.

It is just such an approach that will prove invaluable
when it comes time to access individual /proc/##/data.
Programs could 'chain' only those 'results' structures
representing their current view independent of all the
fields any such programs might be prepared to display.

Thus the standard 'read', which wouldn't apply to task
level data very well (or efficiently), can now become
a 'read_chain' whereby the former PROC_FILL flags need
can be satisfied & yield the minimum open/close calls.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add chaining provisions to meminfo and vmstat
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: add chaining provisions to meminfo and vmstat

If a caller chooses to reduce the overhead of repeated
function calls, this commit provides for acquiring all
the desired information in just a single library call.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add missing meminfo logic, improve efficiency
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: add missing meminfo logic, improve efficiency

This patch fills in some missing fields which have top
dependencies. Additionally, I've tried to mirror those
calculations Jaromir added for release 3.3.10. The one
calculation that remains missing is 'available' memory
for some kernels. For this API, we'll use a fall-back.

Lastly the lxc safeguards which were recently added to
the old procps library were incorporated here as well.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: tweak formatting style for meminfo and vmstat
Jim Warner [Sun, 28 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: tweak formatting style for meminfo and vmstat

This patch mostly just eliminates darn tab characters.

Plus the library function declarations and definitions
have been standardized. Most visibly, the input params
now have all been indented on their own separate line.

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: export pwcache functions correctly
Craig Small [Wed, 24 Jun 2015 12:46:06 +0000 (22:46 +1000)]
library: export pwcache functions correctly

9 years agolibrary: more mem and stat fixes
Craig Small [Wed, 24 Jun 2015 12:16:16 +0000 (22:16 +1000)]
library: more mem and stat fixes

Make distcheck now succeeds.
Changed some of the binaries to use the new API.

9 years agolibrary: Fix up stat API
Craig Small [Tue, 23 Jun 2015 12:22:50 +0000 (22:22 +1000)]
library: Fix up stat API

Adjusted vmstat to use the new API for memory and CPU statistics

9 years agolibrary: memory and vmstat API changes
Craig Small [Sun, 21 Jun 2015 08:22:28 +0000 (18:22 +1000)]
library: memory and vmstat API changes

Created new set of functions for meminfo related calls. Liked the
format of that better so changed vmstat around so the look similar.
Missed the makefile change for uptime so added it in now.

9 years agolibrary: uptime API changes
Craig Small [Sun, 21 Jun 2015 08:20:04 +0000 (18:20 +1000)]
library: uptime API changes

Removed the printf_uptime, binaries can do printf easily enough.
sprint_uptime split into two as there wasn't a lot of common
code
 sprint_uptime(): old style uptime line
 sprint_uptime_short(): short new style "uptime -p"

Hertz_hack needed this, no sane system uses the code (I think)
so just assume 100 like we do in FreeBSD.

9 years agolibrary: Add procps_meminfo_* functions
Craig Small [Sat, 20 Jun 2015 13:08:47 +0000 (23:08 +1000)]
library: Add procps_meminfo_* functions

New set of functions that read the /proc/meminfo file. Still needs
work.

9 years agolibrary: sysstat and vmstat api changes
Craig Small [Fri, 19 Jun 2015 21:43:02 +0000 (07:43 +1000)]
library: sysstat and vmstat api changes

Use the standard libc declarations.
For protecting the headers for C++ procps used to have its
own defines, this change makes them use the standard libc ones.

getstat() -> procps_stat_*
vminfo() -> procps_vmstat_*
These two components of the library now use the newer version of
the API with less exposed global variables. The old methods are
there for now.

Signed-off-by: Craig Small <csmall@enc.com.au>
9 years agopwdx: Do not link to libprocps
Craig Small [Wed, 24 Jun 2015 12:27:24 +0000 (22:27 +1000)]
pwdx: Do not link to libprocps

pwdx doesn't actually use any of the libprocps functions but
it is linked because it is the default.  This specific LDADD
removes that unrequired linking.

9 years agobuild-sys: tweak to prevent dirty tree with every make
Jim Warner [Sat, 20 Jun 2015 05:00:00 +0000 (00:00 -0500)]
build-sys: tweak to prevent dirty tree with every make

Please let's stop the nls translation insanity. With a
one time push we can eliminate the dirty tree syndrome
which surfaces with every local build. Later, before a
release, the translations can be updated in final form
then pushed just 1 more time to the gitlab repository.

I'm tired of having to always re-issue this request in
order to circumvent the problem and thus prevent a too
broad commit (not to mention some nasty side effects).

[ bash$ git update-index --assume-unchanged po/??.po ]

Reference(s):
http://www.freelists.org/post/procps/procpsng-translations

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: sacrifice a redundant procps_linux_version() call
Jim Warner [Sat, 20 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: sacrifice a redundant procps_linux_version() call

With the commit referenced below, the linux version is
no longer available via an external variable. So we'll
eliminate the extra superficial function call employed
at program end as part of a debugging (only) o/p spew.

[ the user will soon be returned to the command line ]
[ & he/she can run their own 'uname -r' if in doubt! ]

Reference(s):
commit 56d9d5e7e701e71646679b2b8cefa9239ee59592

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agofix integer overflow on 2GiB+ maps on 32-bit platforms
Yuriy M. Kaminskiy [Sat, 20 Jun 2015 11:39:41 +0000 (21:39 +1000)]
fix integer overflow on 2GiB+ maps on 32-bit platforms

Signed-off-by: Craig Small <csmall@enc.com.au>
9 years agomiscellaneous: remove some trailing whitespace buildup
Jim Warner [Fri, 19 Jun 2015 13:41:51 +0000 (08:41 -0500)]
miscellaneous: remove some trailing whitespace buildup

wish folks (craig) would use these in their .gitconfig

[core]
  whitespace = trailing-space, space-before-tab, blank-at-eof
[apply]
  whitespace = warn

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agobuild-sys: fix oversight for a newly added header file
Jim Warner [Fri, 19 Jun 2015 13:34:12 +0000 (08:34 -0500)]
build-sys: fix oversight for a newly added header file

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: Change linux version
Craig Small [Fri, 19 Jun 2015 11:00:46 +0000 (21:00 +1000)]
library: Change linux version

Added function procps_linux_version() which used to be an
exported integer instead.  Also changed the method of obtaining
the linux version (more correctly the os release) to use a specific
procfs entry. This works for both Linux and FreeBSD.

9 years agoUpdate the po files
Craig Small [Fri, 19 Jun 2015 10:36:43 +0000 (20:36 +1000)]
Update the po files

9 years agodocumentation: fix man pages due to refactor for wchan
Jim Warner [Thu, 18 Jun 2015 05:00:00 +0000 (00:00 -0500)]
documentation: fix man pages due to refactor for wchan

This patch will bring three of our man pages into line
with the recent refactor of the libprocps wchan logic.

[ and also eliminates more damn eol whitespace which ]
[ snuck in our repo with the commit referenced below ]

Reference(s):
http://www.freelists.org/post/procps/WCHAN,11
commit cf4788c28dba784a09c8b036a56fffa49da584e7

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: adapt to a simplified library interface for wchan
Jim Warner [Thu, 18 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: adapt to a simplified library interface for wchan

This patch was made necessary by those library changes
in support of recently revised/simplified wchan logic.

Reference(s):
http://www.freelists.org/post/procps/WCHAN,11

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agops: exploit the simplified library interface for wchan
Jim Warner [Thu, 18 Jun 2015 05:00:00 +0000 (00:00 -0500)]
ps: exploit the simplified library interface for wchan

This patch was made necessary by those library changes
in support of recently revised/simplified wchan logic.

In addition, this commit eliminates a broken alternate
'namelist' provision which was intended to allow users
to specify a System.map file to be used in translating
addresses into function names. But, the real effect of
the now defunct 'N' and '-n' options was to indirectly
force addresses (not names) to be displayed since such
user named map files could not be successfully parsed.

Besides when the required FRAME_POINTER kconfig option
is absent there is no address to translate and when it
is present /proc/PID/wchan is already translated. Thus
an alternate mapping is unnecessary and inappropriate.

[ we'll forgive POSIX for documenting '-n  namelist' ]

Reference(s):
http://www.freelists.org/post/procps/WCHAN,11

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: refactor and rely on modern kernels for wchan
Jim Warner [Thu, 18 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: refactor and rely on modern kernels for wchan

Several Debian based distributions were recently found
to have omitted a kernel configuration option that had
the effect of rendering /proc/#/stat and /proc/#/wchan
useless for providing any 'sleeping in function' info.

That problem also prompted a reevaluation of the whole
approach to wchan matters which had grown increasingly
complex as our library evolved over the last 13 years.

The net result was a decision to rely on /proc/#/wchan
which arrived along with the 2.5 kernel. This then let
us vastly simplify the internal code plus the external
interface which will benefit both the top and ps pgms.

Reference(s):
http://www.freelists.org/post/procps/WCHAN,11
https://lkml.org/lkml/2008/11/6/12
https://bugs.debian.org/711592

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: correct an alphabetic field error in man document
Jim Warner [Mon, 15 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: correct an alphabetic field error in man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agobuild-sys: do not distribute the aging README.top file
Jim Warner [Tue, 12 May 2015 08:00:00 +0000 (03:00 -0500)]
build-sys: do not distribute the aging README.top file

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: remove procps_version functions
Craig Small [Thu, 18 Jun 2015 12:37:24 +0000 (22:37 +1000)]
library: remove procps_version functions

It doesn't make any sense to have the binary version strings
embedded into the library. The version strings are defined
already either in the Makefile or in include/c.h

9 years agops: update man document to support LXC container names
Jim Warner [Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)]
ps: update man document to support LXC container names

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agops: add code to exploit the new library LXC containers
Jim Warner [Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)]
ps: add code to exploit the new library LXC containers

Reference(s):
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1424253
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1424253

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: update man document to support the LXC containers
Jim Warner [Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: update man document to support the LXC containers

[ in addition to the primary 'lxc' business, i found ]
[ numerous apostrophes used instead of that back-tic ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotop: add support exploiting new library LXC containers
Jim Warner [Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)]
top: add support exploiting new library LXC containers

Reference(s):
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1424253
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1424253

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: add support for displaying LXC container name
Jim Warner [Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)]
library: add support for displaying LXC container name

This commit adds a lxc container name to every proc_t.
If a process is not running in a container, then a '-'
will be provided, making such a field always sortable.

Unlike other proc_t character pointers, lxc containers
will find many duplicate shared values. So rather than
strdup 'em (with a later free required upon reuse), we
try to keep track of those already seen and share that
address among all tasks running within each container.

We rely on the lines in the task's cgroup subdirectory
which may initially seem somewhat unsophisticated. But
the lxc library itself uses a similar approach when it
is called to list active containers. In that case, the
/proc/net/unix directory is parsed for the '/lxc' eye-
catcher, with potential complications from hashed path
and names that are too long (something we don't face).

[ too bad docker abandoned lxc - our commit won't do ]
[ anything for the users of those kind of containers ]

Reference(s):
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1424253
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1424253

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agolibrary: address memory aberration with LXC containers
Jim Warner [Sat, 13 Jun 2015 00:00:00 +0000 (00:00 +0000)]
library: address memory aberration with LXC containers

Under a lxc container, the /proc/meminfo 'MemFree' and
'MemAvailable' amounts will be equal, unless memory is
being limited via cgroups in which case 'MemAvailable'
could exceed that for 'MemTotal'. And when a container
has been nested, there exist additional memory quirks.

A program might then display used or available amounts
greater than total memory (assuming unsigned honored),
or negative values (should a signed cast be employed).

This anomaly primarily impacted the top and free pgms.
Thus, two simple sanity checks have been introduced to
avoid any illogical kb_main_available or kb_main_used.

( Busybox top & free also display anomalous although )
( different results when running in a lxc container. )

Reference(s):
https://bugzilla.redhat.com/show_bug.cgi?id=1153817

Signed-off-by: Jim Warner <james.warner@comcast.net>
9 years agotestsuite: fix ps signals test
Craig Small [Sun, 14 Jun 2015 05:20:48 +0000 (15:20 +1000)]
testsuite: fix ps signals test

On some setups the signals count can change and be truncated. You
will notice this because the number will have "<" prepended. The
testsuite didn't handle this.
You could either get:
         BLOCKED          BLOCKED          BLOCKED           CAUGHT
CAUGHT          CATCHED
0000000000000000 0000000000000000 0000000000000000 00000001f3d1fef9 00000001f3d1fef9 00000001f3d1fef9

or
  BLOCKED   BLOCKED   BLOCKED    CAUGHT    CAUGHT   CATCHED
 00000000  00000000  00000000 <f3d1fef9 <f3d1fef9 <f3d1fef9

9 years agorevert pl.po file
Craig Small [Sat, 13 Jun 2015 23:08:01 +0000 (09:08 +1000)]
revert pl.po file

9 years agoupdate polish po file
Craig Small [Sat, 13 Jun 2015 22:59:53 +0000 (08:59 +1000)]
update polish po file

9 years agoDo not link test process to libprocps
Craig Small [Sat, 13 Jun 2015 22:54:59 +0000 (08:54 +1000)]
Do not link test process to libprocps

The test process introduced at 420cd9c7 incorrectly linked to
libprocps which made the CI runner fail.