procps/proc
Jim Warner abc71a46ad library: improve/standardize one interface, <STAT> api
This commit represents a complete redesign of the stat
interface. Gone are the confusing 8 separate accessors
along with their 2 additional read functions. In their
place we have just 3 accessors, with no read required.

That old interface also suffered an inflexibility with
respect to structures.  Now we deal with an unchanging
standard 'result' struct enabling future changes where
the binary interface will no longer need to be broken.

And gone is that former unnecessary typedef, used when
dealing with jiffies. Now the standard C type is used.

Our new API also adds some brand new functionality. If
a caller plans to employ successive 'select' or 'reap'
invocations, then delta values are available (which is
actually only what that top program is interested in).

At some future point a 'sort' function could be easily
introduced to complement the 'reap' function. However,
I saw no need for it at present and so it was omitted.

There were several design decisions which everyone may
not agree with. In support I'll offer these rationals:

. The 'get' function returns a signed long long result
which means a potential loss of some significance. But
I felt the ability to distinguish actual errors (minus
values) from true zero results were worth such a risk.

. The DELTA item enumerators were also made signed and
smaller than their parents. And they are intentionally
grouped as last so as to emphasize those distinctions.

. The SYS type items were excluded from the new 'reap'
function. It would not make sense to duplicate them in
each results stack. They're limited to 'get'/'select'.

. By the same token, some items (DELTA, etc.) will not
be allowed under that 'get' routine. That function was
already open to significant internal overhead (through
subsequent calls like in vmstat.c). That is why it has
been limited via 1 second between reads of /proc/stat.

Lastly, when we finally get around to documenting this
interface there's a real potential toe stubber when it
comes to the numa node portion. The libnuma.so doesn't
really provide any means to retrieve the active nodes.
Thus, any total reported by <stat> is just the highest
node number plus one, as reported by the numa library.

Any unused/inactive nodes are identified through these
. PROCPS_STAT_TIC_ID shows as PROCPS_STAT_NODE_INVALID

By the same token after the STAT_REAP_CPUS_ONLY 'reap'
. PROCPS_STAT_TIC_NUMA_NODE = PROCPS_STAT_NODE_INVALID

Reference(s):
http://www.freelists.org/post/procps/newlib-stat-interface

Signed-off-by: Jim Warner <james.warner@comcast.net>
2016-05-08 21:12:22 +10:00
..
.gitignore tests: update template and add pids 2016-04-19 21:33:02 +10:00
alloc.c library: cleanup of library includes 2016-04-16 17:03:57 +10:00
alloc.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
COPYING miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
devname.c library: Remove tty_to_dev() 2015-09-01 20:41:25 +10:00
devname.h library: cleanup of readproc functions 2016-04-17 14:14:27 +10:00
diskstat.c misc: Few more resource leak fixes 2016-05-03 21:58:13 +10:00
diskstat.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
escape.c library: re-arrange escape commands 2016-04-17 14:45:19 +10:00
escape.h library: re-arrange escape commands 2016-04-17 14:45:19 +10:00
libprocps.pc.in
libprocps.sym library: improve/standardize one interface, <STAT> api 2016-05-08 21:12:22 +10:00
meminfo.c free: use SReclaimable in cached 2015-10-24 14:29:25 +11:00
meminfo.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
namespace.c miscellaneous: silence a whole bunch of clang warnings 2015-09-21 22:34:27 +10:00
namespace.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
openproc.3 documentation: fix man pages due to refactor for wchan 2015-06-19 19:09:21 +10:00
pids.c library: fix boo-boo left by earlier patch, <PIDS> api 2016-04-26 22:27:16 +10:00
pids.h library: changed use of 'fill' to 'select', <pids> API 2016-04-19 20:38:18 +10:00
procps-private.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
procps.h library: rename those readstat.c & h sources to 'stat' 2016-04-26 22:27:16 +10:00
pwcache.c library: export pwcache functions correctly 2015-06-26 22:37:53 +10:00
pwcache.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
readproc.3 misc: result after checking all files for misspellings 2014-08-08 22:14:21 +02:00
readproc.c library: remove remaining 'likely' & 'unlikely' macros 2016-04-18 19:29:41 +10:00
readproc.h library: cleanup of readproc functions 2016-04-17 14:14:27 +10:00
readproctab.3 misc: result after checking all files for misspellings 2014-08-08 22:14:21 +02:00
slab.c library: fix order of operations for %use of slabinfo 2016-04-25 20:24:20 +10:00
slab.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
stat.c library: improve/standardize one interface, <STAT> api 2016-05-08 21:12:22 +10:00
stat.h library: improve/standardize one interface, <STAT> api 2016-05-08 21:12:22 +10:00
sysinfo.c library: correct the procps_pid_length() +1 distortion 2016-04-18 19:29:41 +10:00
sysinfo.h library: remove an obsolete 'jiffs' typedef in sysinfo 2016-05-08 21:12:22 +10:00
test_namespace.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_pids.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_sysinfo.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_uptime.c library: procps_uptime() return value is a status 2016-05-01 16:50:25 +10:00
test_version.c library: Fix LINUX_VERSION macro 2016-05-01 17:46:25 +10:00
uptime.c library: procps_uptime() return value is a status 2016-05-01 16:50:25 +10:00
uptime.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
version.c miscellaneous: remove some trailing whitespace buildup 2015-06-20 07:46:23 +10:00
version.h library: Fix LINUX_VERSION macro 2016-05-01 17:46:25 +10:00
vmstat.c library: vmstat redesign now using 'stack' vs. 'chain' 2015-07-23 22:31:44 +10:00
vmstat.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
wchan.c library: refactor and rely on modern kernels for wchan 2015-06-19 19:09:20 +10:00
wchan.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00