]> granicus.if.org Git - procps-ng/commitdiff
library: add item origin (as comments) to header files
authorJim Warner <james.warner@comcast.net>
Thu, 20 Dec 2018 06:00:00 +0000 (00:00 -0600)
committerCraig Small <csmall@enc.com.au>
Wed, 2 Jan 2019 21:06:48 +0000 (08:06 +1100)
A lack of documentation seems to be the major obstacle
to releasing this new library. So, in an effort to get
the ball rolling again, this patch adds the origins of
each item as a comment to six of the new header files.

However, before reviewing how such changes may benefit
that documentation objective, it seemed appropriate to
first reflect on newlib's background & current status.

___________________________________________ BACKGROUND
Discussions about and work on a new library began back
in July 2012 but quickly died. After a lull of 2 years
those discussions were resumed in August 2014 but soon
died also (and no code survived the gitorious demise).

With those early discussions, the recommended approach
was to encapsulate all of the libprocps data offerings
in individual functions. When it came to extensibility
it was suggested we should rely on symbols versioning.

Unfortunately that approach would have made for a huge
Application Programming Interface virtually impossible
to master or even document. And, runtime call overhead
would have been substantial for ps and especially top.

So, an alternative design was sought but there were no
new suggestions/contributions via freelists or gitlab.
Thus, in spite of a lack of library design experience,
the procps-ng team (Craig & Jim) set out to develop an
alternative API, more concise and with lower overhead.

Reference(s):
. 07/01/2012, begin library design discussion
https://www.freelists.org/post/procps/Old-library-calls
. 08/12/2014, revival of library design discussion
https://www.freelists.org/post/procps/libprocs-redesign

_____________________________________ DESIGN EVOLUTION
Our newlib branch first appeared on June 14, 2015. And
our current API actually represents the 4th generation
during the past 3 years of evolution. First, there was
a basic 'new', 'get' and 'unref' approach, using enums
to minimize the proliferation of 'get' function calls.

Then, in anticipation of other programs like ps, where
multiple fields times multiple processes would greatly
increase the number of 'get' function calls, a concept
of 'chains' was introduced. This became generation #2.

Such 'chains' proved unnecessarily complex so 'stacks'
replaced them. This was considered the 3rd generation,
but too many implementation details were still exposed
requiring those users to 'alloc', 'read', 'fill', etc.

Finally, a 4th generation emerged representing several
refinements to standardize and minimize those exported
functions, thus hiding all implementation details from
the users. Lastly, handling of 'errno' was normalized.

Reference(s):
. 06/14/2015, revival of new API discussion
https://www.freelists.org/post/procps/The-library-API-again
. 06/24/2015, birth of the newlib branch
https://www.freelists.org/post/procps/new-library
. 06/29/2015, 2nd generation introduced 'chains'
https://www.freelists.org/post/procps/new-library,8
. 07/22/2015, 3rd generation introduced 'stacks'
https://www.freelists.org/post/procps/newlib-stacks-vs-chains
. 06/18/2016, 4th generation refinements begin
https://www.freelists.org/post/procps/newlib-generation-35
. 11/10/2017, 4th generation standardized 'errno'
https://www.freelists.org/post/procps/some-more-master-newlib-stuff

_______________________________________ CURRENT DESIGN
Central to this new design is a simple 'result' struct
reflecting an item plus its value (thanks to a union).
As a user option, these item structures can be grouped
into 'stacks', yielding many results with just 1 call.
Such a 'stack' can be seen as a variable length record
whose content/order is determined solely by the users.

Within that 'result' structure, the union has standard
C language types so there is never a doubt how a value
should be used in a printf statement. Given that linux
requires a least a 32-bit platform the only difference
in capacity surrounds 'long' integers. And, where such
types might be used, the 32-bit maximums are adequate.

The items themselves are simply enumerators defined in
the respective header files. A user can name any items
of interest then the library magically provides result
structure(s). The approach was proven to be extensible
without breaking the ABI (in commit referenced below).

The 6 major APIs each provide for the following calls:
. 'new' ---------> always required as the first call .
. 'ref' -------------------------> strictly optional .
. 'unref' --------> optional, if ill-behaved program .
. 'get' --------------------> retrieve a single item .
. 'select' ----------------> retrieve multiple items .

And the 'get' and 'select' functions provide for delta
results representing the difference between successive
get/select calls (or a 'new' then  'get/select' call).

For the <diskstats>, <pids>, <slabinfo> & <stat> APIs,
where results are unpredictable, a 'reap' function can
return multiple result structures for multiple stacks.

The <pids> API differs from others in that those items
of interest must be provided at 'new' or 'reset' time,
a function unique to this API. And the <pids> 'select'
function requires PIDs or UIDs which are to be fetched
which then operates as a subset of 'reap'. Lastly, the
'get' function is an iterator for successive PIDs/TIDs
returning items previously identified via 'new/reset'.

To provide assistance to users during development, the
special header 'proc/xtra-procps-debug.h' is available
to check type usage against library expectations. That
check is activated by including this header explicitly
or via build using: ./configure '-DXTRA_PROCPS_DEBUG'.

Reference(s):
. 08/05/2016, type validation introduced
https://www.freelists.org/post/procps/newlib-types-validation
commit e3270d463de7eebd9f5ae20c85495e3cb5b69a9f
. 08/11/2016, extensibility while preserving ABI example
https://www.freelists.org/post/procps/new-meminfo-fields
commit 09e1886c9e731f8b8c89a55d11f72f53f030b2de

_________________________ INITIAL DOCUMENTATION EFFORT
The initial attempt, referenced below, dealt primarily
with the <pids> interface. Separate man pages for each
exported function were created. Plus there was another
document describing the items, among other miscellany.

Adopting such an approach encounters several problems:

1. In order to use these man pages, users are required
to already know how to use the library. Or alternately
one could randomly search each of them while trying to
ascertain which function call satisfies their need and
what exactly was the proper compliment/order required.

2. While we can explain what all of those <pids> items
represent, that certainly isn't true for all the APIs.
See the gaps in kernel documentation for <meminfo> and
complete lack of documentation with that <vmstat> API.

3. Our documentation effort should take pains to avoid
unnecessary implementation details. Here's an example:
. "The pointer to info will have memory"
. "allocated and a structure created."

Alternatively, the following conveys user requirements
while not offering any internal implementation detail:
. "You must provide the address of a NULL"
. "info structure pointer."

Reference(s):
. 01/04/2017, initial documentation offering
https://www.freelists.org/post/procps/Using-reap-and-get
commit 2598e9f2ce39c93ebf55f664454d3bea919ed4e0

___________________ RECOMMENDED DOCUMENTATION APPROACH
I recommend that the newlib documentation consist of 3
man pages only. The first would cover the 5 major APIs
and their common functions. The second would deal with
the <pids> API exclusively, explaining how it differs.
Any remaining exported libproc functions which are yet
to be included could be represented in a 3rd document.

For these new documents the following are are assumed:

1. Since we will not be able to document all items, we
shouldn't try to document any items. We should instead
rely on proc(5) or Documentation/filesystems/proc.txt.

2. Program development often involves referencing some
header file(s). So, make that an absolute requirement.

3. With the addition of item origins, represented with
this commit, and considering that 'types' were already
present, the header file might be all some users need.

4. And who knows, when a user of our libproc complains
about gaps in their documentation, it might prompt the
kernel folks to correct those long standing omissions.

To summarize, I suggest that we replace that libproc.3
document with a more general one explaining the basics
of accessing this new library and the common calls for
most of the major interfaces. We can then create a new
document (libproc-pids.3?), which explains differences
in using the <PIDS> application programming interface.
A final document (libproc-misc.3?) covers what's left.

Signed-off-by: Jim Warner <james.warner@comcast.net>
proc/diskstats.h
proc/meminfo.h
proc/pids.h
proc/slabinfo.h
proc/stat.h
proc/vmstat.h

index 278b5b178d41fe2f06ad8fe750d883a9651879d0..92195c3db1c36133557fac39387a1a5f6beff40c 100644 (file)
@@ -30,35 +30,36 @@ extern "C" {
 enum diskstats_item {
     DISKSTATS_noop,                 //        ( never altered )
     DISKSTATS_extra,                //        ( reset to zero )
-
-    DISKSTATS_NAME,                 //    str
-    DISKSTATS_TYPE,                 //  s_int
-    DISKSTATS_MAJOR,                //  s_int
-    DISKSTATS_MINOR,                //  s_int
-
-    DISKSTATS_READS,                // ul_int
-    DISKSTATS_READS_MERGED,         // ul_int
-    DISKSTATS_READ_SECTORS,         // ul_int
-    DISKSTATS_READ_TIME,            // ul_int
-    DISKSTATS_WRITES,               // ul_int
-    DISKSTATS_WRITES_MERGED,        // ul_int
-    DISKSTATS_WRITE_SECTORS,        // ul_int
-    DISKSTATS_WRITE_TIME,           // ul_int
-    DISKSTATS_IO_TIME,              // ul_int
-    DISKSTATS_IO_WTIME,             // ul_int
-
-    DISKSTATS_IO_INPROGRESS,        //  s_int
-
-    DISKSTATS_DELTA_READS,          //  s_int
-    DISKSTATS_DELTA_READS_MERGED,   //  s_int
-    DISKSTATS_DELTA_READ_SECTORS,   //  s_int
-    DISKSTATS_DELTA_READ_TIME,      //  s_int
-    DISKSTATS_DELTA_WRITES,         //  s_int
-    DISKSTATS_DELTA_WRITES_MERGED,  //  s_int
-    DISKSTATS_DELTA_WRITE_SECTORS,  //  s_int
-    DISKSTATS_DELTA_WRITE_TIME,     //  s_int
-    DISKSTATS_DELTA_IO_TIME,        //  s_int
-    DISKSTATS_DELTA_IO_WTIME        //  s_int
+                                    //  returns        origin, see proc(5)
+                                    //  -------        -------------------
+    DISKSTATS_NAME,                 //     str         /proc/diskstats
+    DISKSTATS_TYPE,                 //   s_int          "
+    DISKSTATS_MAJOR,                //   s_int          "
+    DISKSTATS_MINOR,                //   s_int          "
+
+    DISKSTATS_READS,                //  ul_int          "
+    DISKSTATS_READS_MERGED,         //  ul_int          "
+    DISKSTATS_READ_SECTORS,         //  ul_int          "
+    DISKSTATS_READ_TIME,            //  ul_int          "
+    DISKSTATS_WRITES,               //  ul_int          "
+    DISKSTATS_WRITES_MERGED,        //  ul_int          "
+    DISKSTATS_WRITE_SECTORS,        //  ul_int          "
+    DISKSTATS_WRITE_TIME,           //  ul_int          "
+    DISKSTATS_IO_TIME,              //  ul_int          "
+    DISKSTATS_IO_WTIME,             //  ul_int          "
+
+    DISKSTATS_IO_INPROGRESS,        //   s_int          "
+
+    DISKSTATS_DELTA_READS,          //   s_int         dervied from above
+    DISKSTATS_DELTA_READS_MERGED,   //   s_int          "
+    DISKSTATS_DELTA_READ_SECTORS,   //   s_int          "
+    DISKSTATS_DELTA_READ_TIME,      //   s_int          "
+    DISKSTATS_DELTA_WRITES,         //   s_int          "
+    DISKSTATS_DELTA_WRITES_MERGED,  //   s_int          "
+    DISKSTATS_DELTA_WRITE_SECTORS,  //   s_int          "
+    DISKSTATS_DELTA_WRITE_TIME,     //   s_int          "
+    DISKSTATS_DELTA_IO_TIME,        //   s_int          "
+    DISKSTATS_DELTA_IO_WTIME        //   s_int          "
 };
 
 enum diskstats_sort_order {
index ebc1ece0e1d177cd68f387afa3557543a50cc43c..092301944232e3f024cbfc0cb4234184aba62677 100644 (file)
@@ -29,115 +29,117 @@ enum meminfo_item {
     /*
         note: all of the following values are expressed as KiB
     */
-    MEMINFO_MEM_ACTIVE,            //  ul_int
-    MEMINFO_MEM_ACTIVE_ANON,       //  ul_int
-    MEMINFO_MEM_ACTIVE_FILE,       //  ul_int
-    MEMINFO_MEM_ANON,              //  ul_int
-    MEMINFO_MEM_AVAILABLE,         //  ul_int
-    MEMINFO_MEM_BOUNCE,            //  ul_int
-    MEMINFO_MEM_BUFFERS,           //  ul_int
-    MEMINFO_MEM_CACHED,            //  ul_int
-    MEMINFO_MEM_CACHED_ALL,        //  ul_int
-    MEMINFO_MEM_COMMIT_LIMIT,      //  ul_int
-    MEMINFO_MEM_COMMITTED_AS,      //  ul_int
-    MEMINFO_MEM_HARD_CORRUPTED,    //  ul_int
-    MEMINFO_MEM_DIRTY,             //  ul_int
-    MEMINFO_MEM_FREE,              //  ul_int
-    MEMINFO_MEM_HUGE_ANON,         //  ul_int
-    MEMINFO_MEM_HUGE_FREE,         //  ul_int
-    MEMINFO_MEM_HUGE_RSVD,         //  ul_int
-    MEMINFO_MEM_HUGE_SIZE,         //  ul_int
-    MEMINFO_MEM_HUGE_SURPLUS,      //  ul_int
-    MEMINFO_MEM_HUGE_TOTAL,        //  ul_int
-    MEMINFO_MEM_INACTIVE,          //  ul_int
-    MEMINFO_MEM_INACTIVE_ANON,     //  ul_int
-    MEMINFO_MEM_INACTIVE_FILE,     //  ul_int
-    MEMINFO_MEM_KERNEL_RECLAIM,    //  ul_int
-    MEMINFO_MEM_KERNEL_STACK,      //  ul_int
-    MEMINFO_MEM_LOCKED,            //  ul_int
-    MEMINFO_MEM_MAPPED,            //  ul_int
-    MEMINFO_MEM_MAP_COPY,          //  ul_int
-    MEMINFO_MEM_NFS_UNSTABLE,      //  ul_int
-    MEMINFO_MEM_PAGE_TABLES,       //  ul_int
-    MEMINFO_MEM_QUICKLISTS,        //  ul_int
-    MEMINFO_MEM_SHARED,            //  ul_int
-    MEMINFO_MEM_SHMEM_HUGE,        //  ul_int
-    MEMINFO_MEM_SHMEM_HUGE_MAP,    //  ul_int
-    MEMINFO_MEM_SLAB,              //  ul_int
-    MEMINFO_MEM_SLAB_RECLAIM,      //  ul_int
-    MEMINFO_MEM_SLAB_UNRECLAIM,    //  ul_int
-    MEMINFO_MEM_TOTAL,             //  ul_int
-    MEMINFO_MEM_UNEVICTABLE,       //  ul_int
-    MEMINFO_MEM_USED,              //  ul_int
-    MEMINFO_MEM_VM_ALLOC_CHUNK,    //  ul_int
-    MEMINFO_MEM_VM_ALLOC_TOTAL,    //  ul_int
-    MEMINFO_MEM_VM_ALLOC_USED,     //  ul_int
-    MEMINFO_MEM_WRITEBACK,         //  ul_int
-    MEMINFO_MEM_WRITEBACK_TMP,     //  ul_int
-
-    MEMINFO_DELTA_ACTIVE,          //   s_int
-    MEMINFO_DELTA_ACTIVE_ANON,     //   s_int
-    MEMINFO_DELTA_ACTIVE_FILE,     //   s_int
-    MEMINFO_DELTA_ANON,            //   s_int
-    MEMINFO_DELTA_AVAILABLE,       //   s_int
-    MEMINFO_DELTA_BOUNCE,          //   s_int
-    MEMINFO_DELTA_BUFFERS,         //   s_int
-    MEMINFO_DELTA_CACHED,          //   s_int
-    MEMINFO_DELTA_CACHED_ALL,      //   s_int
-    MEMINFO_DELTA_COMMIT_LIMIT,    //   s_int
-    MEMINFO_DELTA_COMMITTED_AS,    //   s_int
-    MEMINFO_DELTA_HARD_CORRUPTED,  //   s_int
-    MEMINFO_DELTA_DIRTY,           //   s_int
-    MEMINFO_DELTA_FREE,            //   s_int
-    MEMINFO_DELTA_HUGE_ANON,       //   s_int
-    MEMINFO_DELTA_HUGE_FREE,       //   s_int
-    MEMINFO_DELTA_HUGE_RSVD,       //   s_int
-    MEMINFO_DELTA_HUGE_SIZE,       //   s_int
-    MEMINFO_DELTA_HUGE_SURPLUS,    //   s_int
-    MEMINFO_DELTA_HUGE_TOTAL,      //   s_int
-    MEMINFO_DELTA_INACTIVE,        //   s_int
-    MEMINFO_DELTA_INACTIVE_ANON,   //   s_int
-    MEMINFO_DELTA_INACTIVE_FILE,   //   s_int
-    MEMINFO_DELTA_KERNEL_RECLAIM,  //   s_int
-    MEMINFO_DELTA_KERNEL_STACK,    //   s_int
-    MEMINFO_DELTA_LOCKED,          //   s_int
-    MEMINFO_DELTA_MAPPED,          //   s_int
-    MEMINFO_DELTA_MAP_COPY,        //   s_int
-    MEMINFO_DELTA_NFS_UNSTABLE,    //   s_int
-    MEMINFO_DELTA_PAGE_TABLES,     //   s_int
-    MEMINFO_DELTA_QUICKLISTS,      //   s_int
-    MEMINFO_DELTA_SHARED,          //   s_int
-    MEMINFO_DELTA_SHMEM_HUGE,      //   s_int
-    MEMINFO_DELTA_SHMEM_HUGE_MAP,  //   s_int
-    MEMINFO_DELTA_SLAB,            //   s_int
-    MEMINFO_DELTA_SLAB_RECLAIM,    //   s_int
-    MEMINFO_DELTA_SLAB_UNRECLAIM,  //   s_int
-    MEMINFO_DELTA_TOTAL,           //   s_int
-    MEMINFO_DELTA_UNEVICTABLE,     //   s_int
-    MEMINFO_DELTA_USED,            //   s_int
-    MEMINFO_DELTA_VM_ALLOC_CHUNK,  //   s_int
-    MEMINFO_DELTA_VM_ALLOC_TOTAL,  //   s_int
-    MEMINFO_DELTA_VM_ALLOC_USED,   //   s_int
-    MEMINFO_DELTA_WRITEBACK,       //   s_int
-    MEMINFO_DELTA_WRITEBACK_TMP,   //   s_int
-
-    MEMINFO_MEMHI_FREE,            //  ul_int
-    MEMINFO_MEMHI_TOTAL,           //  ul_int
-    MEMINFO_MEMHI_USED,            //  ul_int
-
-    MEMINFO_MEMLO_FREE,            //  ul_int
-    MEMINFO_MEMLO_TOTAL,           //  ul_int
-    MEMINFO_MEMLO_USED,            //  ul_int
-
-    MEMINFO_SWAP_CACHED,           //  ul_int
-    MEMINFO_SWAP_FREE,             //  ul_int
-    MEMINFO_SWAP_TOTAL,            //  ul_int
-    MEMINFO_SWAP_USED,             //  ul_int
-
-    MEMINFO_SWAP_DELTA_CACHED,     //   s_int
-    MEMINFO_SWAP_DELTA_FREE,       //   s_int
-    MEMINFO_SWAP_DELTA_TOTAL,      //   s_int
-    MEMINFO_SWAP_DELTA_USED        //   s_int
+                                   //  returns        origin, see proc(5)
+                                   //  -------        -------------------
+    MEMINFO_MEM_ACTIVE,            //  ul_int         /proc/meminfo
+    MEMINFO_MEM_ACTIVE_ANON,       //  ul_int          "
+    MEMINFO_MEM_ACTIVE_FILE,       //  ul_int          "
+    MEMINFO_MEM_ANON,              //  ul_int          "
+    MEMINFO_MEM_AVAILABLE,         //  ul_int          "
+    MEMINFO_MEM_BOUNCE,            //  ul_int          "
+    MEMINFO_MEM_BUFFERS,           //  ul_int          "
+    MEMINFO_MEM_CACHED,            //  ul_int          "
+    MEMINFO_MEM_CACHED_ALL,        //  ul_int          "
+    MEMINFO_MEM_COMMIT_LIMIT,      //  ul_int          "
+    MEMINFO_MEM_COMMITTED_AS,      //  ul_int          "
+    MEMINFO_MEM_HARD_CORRUPTED,    //  ul_int          "
+    MEMINFO_MEM_DIRTY,             //  ul_int          "
+    MEMINFO_MEM_FREE,              //  ul_int          "
+    MEMINFO_MEM_HUGE_ANON,         //  ul_int          "
+    MEMINFO_MEM_HUGE_FREE,         //  ul_int          "
+    MEMINFO_MEM_HUGE_RSVD,         //  ul_int          "
+    MEMINFO_MEM_HUGE_SIZE,         //  ul_int          "
+    MEMINFO_MEM_HUGE_SURPLUS,      //  ul_int          "
+    MEMINFO_MEM_HUGE_TOTAL,        //  ul_int          "
+    MEMINFO_MEM_INACTIVE,          //  ul_int          "
+    MEMINFO_MEM_INACTIVE_ANON,     //  ul_int          "
+    MEMINFO_MEM_INACTIVE_FILE,     //  ul_int          "
+    MEMINFO_MEM_KERNEL_RECLAIM,    //  ul_int          "
+    MEMINFO_MEM_KERNEL_STACK,      //  ul_int          "
+    MEMINFO_MEM_LOCKED,            //  ul_int          "
+    MEMINFO_MEM_MAPPED,            //  ul_int          "
+    MEMINFO_MEM_MAP_COPY,          //  ul_int          "
+    MEMINFO_MEM_NFS_UNSTABLE,      //  ul_int          "
+    MEMINFO_MEM_PAGE_TABLES,       //  ul_int          "
+    MEMINFO_MEM_QUICKLISTS,        //  ul_int          "
+    MEMINFO_MEM_SHARED,            //  ul_int          "
+    MEMINFO_MEM_SHMEM_HUGE,        //  ul_int          "
+    MEMINFO_MEM_SHMEM_HUGE_MAP,    //  ul_int          "
+    MEMINFO_MEM_SLAB,              //  ul_int          "
+    MEMINFO_MEM_SLAB_RECLAIM,      //  ul_int          "
+    MEMINFO_MEM_SLAB_UNRECLAIM,    //  ul_int          "
+    MEMINFO_MEM_TOTAL,             //  ul_int          "
+    MEMINFO_MEM_UNEVICTABLE,       //  ul_int          "
+    MEMINFO_MEM_USED,              //  ul_int          "
+    MEMINFO_MEM_VM_ALLOC_CHUNK,    //  ul_int          "
+    MEMINFO_MEM_VM_ALLOC_TOTAL,    //  ul_int          "
+    MEMINFO_MEM_VM_ALLOC_USED,     //  ul_int          "
+    MEMINFO_MEM_WRITEBACK,         //  ul_int          "
+    MEMINFO_MEM_WRITEBACK_TMP,     //  ul_int          "
+
+    MEMINFO_DELTA_ACTIVE,          //   s_int         dervied from above
+    MEMINFO_DELTA_ACTIVE_ANON,     //   s_int          "
+    MEMINFO_DELTA_ACTIVE_FILE,     //   s_int          "
+    MEMINFO_DELTA_ANON,            //   s_int          "
+    MEMINFO_DELTA_AVAILABLE,       //   s_int          "
+    MEMINFO_DELTA_BOUNCE,          //   s_int          "
+    MEMINFO_DELTA_BUFFERS,         //   s_int          "
+    MEMINFO_DELTA_CACHED,          //   s_int          "
+    MEMINFO_DELTA_CACHED_ALL,      //   s_int          "
+    MEMINFO_DELTA_COMMIT_LIMIT,    //   s_int          "
+    MEMINFO_DELTA_COMMITTED_AS,    //   s_int          "
+    MEMINFO_DELTA_HARD_CORRUPTED,  //   s_int          "
+    MEMINFO_DELTA_DIRTY,           //   s_int          "
+    MEMINFO_DELTA_FREE,            //   s_int          "
+    MEMINFO_DELTA_HUGE_ANON,       //   s_int          "
+    MEMINFO_DELTA_HUGE_FREE,       //   s_int          "
+    MEMINFO_DELTA_HUGE_RSVD,       //   s_int          "
+    MEMINFO_DELTA_HUGE_SIZE,       //   s_int          "
+    MEMINFO_DELTA_HUGE_SURPLUS,    //   s_int          "
+    MEMINFO_DELTA_HUGE_TOTAL,      //   s_int          "
+    MEMINFO_DELTA_INACTIVE,        //   s_int          "
+    MEMINFO_DELTA_INACTIVE_ANON,   //   s_int          "
+    MEMINFO_DELTA_INACTIVE_FILE,   //   s_int          "
+    MEMINFO_DELTA_KERNEL_RECLAIM,  //   s_int          "
+    MEMINFO_DELTA_KERNEL_STACK,    //   s_int          "
+    MEMINFO_DELTA_LOCKED,          //   s_int          "
+    MEMINFO_DELTA_MAPPED,          //   s_int          "
+    MEMINFO_DELTA_MAP_COPY,        //   s_int          "
+    MEMINFO_DELTA_NFS_UNSTABLE,    //   s_int          "
+    MEMINFO_DELTA_PAGE_TABLES,     //   s_int          "
+    MEMINFO_DELTA_QUICKLISTS,      //   s_int          "
+    MEMINFO_DELTA_SHARED,          //   s_int          "
+    MEMINFO_DELTA_SHMEM_HUGE,      //   s_int          "
+    MEMINFO_DELTA_SHMEM_HUGE_MAP,  //   s_int          "
+    MEMINFO_DELTA_SLAB,            //   s_int          "
+    MEMINFO_DELTA_SLAB_RECLAIM,    //   s_int          "
+    MEMINFO_DELTA_SLAB_UNRECLAIM,  //   s_int          "
+    MEMINFO_DELTA_TOTAL,           //   s_int          "
+    MEMINFO_DELTA_UNEVICTABLE,     //   s_int          "
+    MEMINFO_DELTA_USED,            //   s_int          "
+    MEMINFO_DELTA_VM_ALLOC_CHUNK,  //   s_int          "
+    MEMINFO_DELTA_VM_ALLOC_TOTAL,  //   s_int          "
+    MEMINFO_DELTA_VM_ALLOC_USED,   //   s_int          "
+    MEMINFO_DELTA_WRITEBACK,       //   s_int          "
+    MEMINFO_DELTA_WRITEBACK_TMP,   //   s_int          "
+
+    MEMINFO_MEMHI_FREE,            //  ul_int         /proc/meminfo
+    MEMINFO_MEMHI_TOTAL,           //  ul_int          "
+    MEMINFO_MEMHI_USED,            //  ul_int          "
+
+    MEMINFO_MEMLO_FREE,            //  ul_int          "
+    MEMINFO_MEMLO_TOTAL,           //  ul_int          "
+    MEMINFO_MEMLO_USED,            //  ul_int          "
+
+    MEMINFO_SWAP_CACHED,           //  ul_int          "
+    MEMINFO_SWAP_FREE,             //  ul_int          "
+    MEMINFO_SWAP_TOTAL,            //  ul_int          "
+    MEMINFO_SWAP_USED,             //  ul_int          "
+
+    MEMINFO_SWAP_DELTA_CACHED,     //   s_int         dervied from above
+    MEMINFO_SWAP_DELTA_FREE,       //   s_int          "
+    MEMINFO_SWAP_DELTA_TOTAL,      //   s_int          "
+    MEMINFO_SWAP_DELTA_USED        //   s_int          "
 };
 
 
index 7e4151bbb5667a7037519fb74d48a4870d6a6e84..72a80f5775eb26bfdceaf1fb73dc50c7618932b0 100644 (file)
@@ -30,125 +30,127 @@ extern "C" {
 enum pids_item {
     PIDS_noop,              //        ( never altered )
     PIDS_extra,             //        ( reset to zero )
-    PIDS_ADDR_END_CODE,     //  ul_int
-    PIDS_ADDR_KSTK_EIP,     //  ul_int
-    PIDS_ADDR_KSTK_ESP,     //  ul_int
-    PIDS_ADDR_START_CODE,   //  ul_int
-    PIDS_ADDR_START_STACK,  //  ul_int
-    PIDS_CGNAME,            //     str
-    PIDS_CGROUP,            //     str
-    PIDS_CGROUP_V,          //    strv
-    PIDS_CMD,               //     str
-    PIDS_CMDLINE,           //     str
-    PIDS_CMDLINE_V,         //    strv
-    PIDS_ENVIRON,           //     str
-    PIDS_ENVIRON_V,         //    strv
-    PIDS_EXE,               //     str
-    PIDS_EXIT_SIGNAL,       //   s_int
-    PIDS_FLAGS,             //  ul_int
-    PIDS_FLT_MAJ,           //  ul_int
-    PIDS_FLT_MAJ_C,         //  ul_int
-    PIDS_FLT_MAJ_DELTA,     //   s_int
-    PIDS_FLT_MIN,           //  ul_int
-    PIDS_FLT_MIN_C,         //  ul_int
-    PIDS_FLT_MIN_DELTA,     //   s_int
-    PIDS_ID_EGID,           //   u_int
-    PIDS_ID_EGROUP,         //     str
-    PIDS_ID_EUID,           //   u_int
-    PIDS_ID_EUSER,          //     str
-    PIDS_ID_FGID,           //   u_int
-    PIDS_ID_FGROUP,         //     str
-    PIDS_ID_FUID,           //   u_int
-    PIDS_ID_FUSER,          //     str
-    PIDS_ID_LOGIN,          //   s_int
-    PIDS_ID_PGRP,           //   s_int
-    PIDS_ID_PID,            //   s_int
-    PIDS_ID_PPID,           //   s_int
-    PIDS_ID_RGID,           //   u_int
-    PIDS_ID_RGROUP,         //     str
-    PIDS_ID_RUID,           //   u_int
-    PIDS_ID_RUSER,          //     str
-    PIDS_ID_SESSION,        //   s_int
-    PIDS_ID_SGID,           //   u_int
-    PIDS_ID_SGROUP,         //     str
-    PIDS_ID_SUID,           //   u_int
-    PIDS_ID_SUSER,          //     str
-    PIDS_ID_TGID,           //   s_int
-    PIDS_ID_TID,            //   s_int
-    PIDS_ID_TPGID,          //   s_int
-    PIDS_LXCNAME,           //     str
-    PIDS_MEM_CODE,          //  ul_int
-    PIDS_MEM_CODE_PGS,      //  ul_int
-    PIDS_MEM_DATA,          //  ul_int
-    PIDS_MEM_DATA_PGS,      //  ul_int
-    PIDS_MEM_RES,           //  ul_int
-    PIDS_MEM_RES_PGS,       //  ul_int
-    PIDS_MEM_SHR,           //  ul_int
-    PIDS_MEM_SHR_PGS,       //  ul_int
-    PIDS_MEM_VIRT,          //  ul_int
-    PIDS_MEM_VIRT_PGS,      //  ul_int
-    PIDS_NICE,              //   s_int
-    PIDS_NLWP,              //   s_int
-    PIDS_NS_IPC,            //  ul_int
-    PIDS_NS_MNT,            //  ul_int
-    PIDS_NS_NET,            //  ul_int
-    PIDS_NS_PID,            //  ul_int
-    PIDS_NS_USER,           //  ul_int
-    PIDS_NS_UTS,            //  ul_int
-    PIDS_OOM_ADJ,           //   s_int
-    PIDS_OOM_SCORE,         //   s_int
-    PIDS_PRIORITY,          //   s_int
-    PIDS_PROCESSOR,         //   u_int
-    PIDS_PROCESSOR_NODE,    //   s_int
-    PIDS_RSS,               //  ul_int
-    PIDS_RSS_RLIM,          //  ul_int
-    PIDS_RTPRIO,            //   s_int
-    PIDS_SCHED_CLASS,       //   s_int
-    PIDS_SD_MACH,           //     str
-    PIDS_SD_OUID,           //     str
-    PIDS_SD_SEAT,           //     str
-    PIDS_SD_SESS,           //     str
-    PIDS_SD_SLICE,          //     str
-    PIDS_SD_UNIT,           //     str
-    PIDS_SD_UUNIT,          //     str
-    PIDS_SIGBLOCKED,        //     str
-    PIDS_SIGCATCH,          //     str
-    PIDS_SIGIGNORE,         //     str
-    PIDS_SIGNALS,           //     str
-    PIDS_SIGPENDING,        //     str
-    PIDS_STATE,             //    s_ch
-    PIDS_SUPGIDS,           //     str
-    PIDS_SUPGROUPS,         //     str
-    PIDS_TICS_ALL,          // ull_int
-    PIDS_TICS_ALL_C,        // ull_int
-    PIDS_TICS_ALL_DELTA,    //   s_int
-    PIDS_TICS_BLKIO,        // ull_int
-    PIDS_TICS_GUEST,        // ull_int
-    PIDS_TICS_GUEST_C,      // ull_int
-    PIDS_TICS_SYSTEM,       // ull_int
-    PIDS_TICS_SYSTEM_C,     // ull_int
-    PIDS_TICS_USER,         // ull_int
-    PIDS_TICS_USER_C,       // ull_int
-    PIDS_TIME_ALL,          // ull_int
-    PIDS_TIME_ELAPSED,      // ull_int
-    PIDS_TIME_START,        // ull_int
-    PIDS_TTY,               //   s_int
-    PIDS_TTY_NAME,          //     str
-    PIDS_TTY_NUMBER,        //     str
-    PIDS_VM_DATA,           //  ul_int
-    PIDS_VM_EXE,            //  ul_int
-    PIDS_VM_LIB,            //  ul_int
-    PIDS_VM_RSS,            //  ul_int
-    PIDS_VM_RSS_ANON,       //  ul_int
-    PIDS_VM_RSS_FILE,       //  ul_int
-    PIDS_VM_RSS_LOCKED,     //  ul_int
-    PIDS_VM_RSS_SHARED,     //  ul_int
-    PIDS_VM_SIZE,           //  ul_int
-    PIDS_VM_STACK,          //  ul_int
-    PIDS_VM_SWAP,           //  ul_int
-    PIDS_VM_USED,           //  ul_int
-    PIDS_VSIZE_PGS,         //  ul_int
-    PIDS_WCHAN_NAME         //     str
+                            //  returns        origin, see proc(5)
+                            //  -------        -------------------
+    PIDS_ADDR_END_CODE,     //   ul_int        stat
+    PIDS_ADDR_KSTK_EIP,     //   ul_int        stat
+    PIDS_ADDR_KSTK_ESP,     //   ul_int        stat
+    PIDS_ADDR_START_CODE,   //   ul_int        stat
+    PIDS_ADDR_START_STACK,  //   ul_int        stat
+    PIDS_CGNAME,            //      str        cgroup
+    PIDS_CGROUP,            //      str        cgroup
+    PIDS_CGROUP_V,          //     strv        cgroup
+    PIDS_CMD,               //      str        stat or status
+    PIDS_CMDLINE,           //      str        cmdline
+    PIDS_CMDLINE_V,         //     strv        cmdline
+    PIDS_ENVIRON,           //      str        environ
+    PIDS_ENVIRON_V,         //     strv        environ
+    PIDS_EXE,               //      str        exe
+    PIDS_EXIT_SIGNAL,       //    s_int        stat
+    PIDS_FLAGS,             //   ul_int        stat
+    PIDS_FLT_MAJ,           //   ul_int        stat
+    PIDS_FLT_MAJ_C,         //   ul_int        stat
+    PIDS_FLT_MAJ_DELTA,     //    s_int        stat
+    PIDS_FLT_MIN,           //   ul_int        stat
+    PIDS_FLT_MIN_C,         //   ul_int        stat
+    PIDS_FLT_MIN_DELTA,     //    s_int        stat
+    PIDS_ID_EGID,           //    u_int        status
+    PIDS_ID_EGROUP,         //      str      [ EGID based, see: getgrgid(3) ]
+    PIDS_ID_EUID,           //    u_int        status
+    PIDS_ID_EUSER,          //      str      [ EUID based, see: getpwuid(3) ]
+    PIDS_ID_FGID,           //    u_int        status
+    PIDS_ID_FGROUP,         //      str      [ FGID based, see: getgrgid(3) ]
+    PIDS_ID_FUID,           //    u_int        status
+    PIDS_ID_FUSER,          //      str      [ FUID based, see: getpwuid(3) ]
+    PIDS_ID_LOGIN,          //    s_int        loginuid
+    PIDS_ID_PGRP,           //    s_int        stat
+    PIDS_ID_PID,            //    s_int        as: /proc/<pid>
+    PIDS_ID_PPID,           //    s_int        stat or status
+    PIDS_ID_RGID,           //    u_int        status
+    PIDS_ID_RGROUP,         //      str      [ RGID based, see: getgrgid(3) ]
+    PIDS_ID_RUID,           //    u_int        status
+    PIDS_ID_RUSER,          //      str      [ RUID based, see: getpwuid(3) ]
+    PIDS_ID_SESSION,        //    s_int        stat
+    PIDS_ID_SGID,           //    u_int        status
+    PIDS_ID_SGROUP,         //      str      [ SGID based, see: getgrgid(3) ]
+    PIDS_ID_SUID,           //    u_int        status
+    PIDS_ID_SUSER,          //      str      [ SUID based, see: getpwuid(3) ]
+    PIDS_ID_TGID,           //    s_int        status
+    PIDS_ID_TID,            //    s_int        as: /proc/<pid>/task/<tid>
+    PIDS_ID_TPGID,          //    s_int        stat
+    PIDS_LXCNAME,           //      str        cgroup
+    PIDS_MEM_CODE,          //   ul_int        statm
+    PIDS_MEM_CODE_PGS,      //   ul_int        statm
+    PIDS_MEM_DATA,          //   ul_int        statm
+    PIDS_MEM_DATA_PGS,      //   ul_int        statm
+    PIDS_MEM_RES,           //   ul_int        statm
+    PIDS_MEM_RES_PGS,       //   ul_int        statm
+    PIDS_MEM_SHR,           //   ul_int        statm
+    PIDS_MEM_SHR_PGS,       //   ul_int        statm
+    PIDS_MEM_VIRT,          //   ul_int        statm
+    PIDS_MEM_VIRT_PGS,      //   ul_int        statm
+    PIDS_NICE,              //    s_int        stat
+    PIDS_NLWP,              //    s_int        stat or status
+    PIDS_NS_IPC,            //   ul_int        ns/
+    PIDS_NS_MNT,            //   ul_int        ns/
+    PIDS_NS_NET,            //   ul_int        ns/
+    PIDS_NS_PID,            //   ul_int        ns/
+    PIDS_NS_USER,           //   ul_int        ns/
+    PIDS_NS_UTS,            //   ul_int        ns/
+    PIDS_OOM_ADJ,           //    s_int        oom_score_adj
+    PIDS_OOM_SCORE,         //    s_int        oom_score
+    PIDS_PRIORITY,          //    s_int        stat
+    PIDS_PROCESSOR,         //    u_int        stat
+    PIDS_PROCESSOR_NODE,    //    s_int        stat
+    PIDS_RSS,               //   ul_int        stat
+    PIDS_RSS_RLIM,          //   ul_int        stat
+    PIDS_RTPRIO,            //    s_int        stat
+    PIDS_SCHED_CLASS,       //    s_int        stat
+    PIDS_SD_MACH,           //      str      [ PID/TID based, see: sd-login(3) ]
+    PIDS_SD_OUID,           //      str         "
+    PIDS_SD_SEAT,           //      str         "
+    PIDS_SD_SESS,           //      str         "
+    PIDS_SD_SLICE,          //      str         "
+    PIDS_SD_UNIT,           //      str         "
+    PIDS_SD_UUNIT,          //      str         "
+    PIDS_SIGBLOCKED,        //      str        status
+    PIDS_SIGCATCH,          //      str        status
+    PIDS_SIGIGNORE,         //      str        status
+    PIDS_SIGNALS,           //      str        status
+    PIDS_SIGPENDING,        //      str        status
+    PIDS_STATE,             //     s_ch        stat or status
+    PIDS_SUPGIDS,           //      str        status
+    PIDS_SUPGROUPS,         //      str      [ SUPGIDS based, see: getgrgid(3) ]
+    PIDS_TICS_ALL,          //  ull_int        stat
+    PIDS_TICS_ALL_C,        //  ull_int        stat
+    PIDS_TICS_ALL_DELTA,    //    s_int        stat
+    PIDS_TICS_BLKIO,        //  ull_int        stat
+    PIDS_TICS_GUEST,        //  ull_int        stat
+    PIDS_TICS_GUEST_C,      //  ull_int        stat
+    PIDS_TICS_SYSTEM,       //  ull_int        stat
+    PIDS_TICS_SYSTEM_C,     //  ull_int        stat
+    PIDS_TICS_USER,         //  ull_int        stat
+    PIDS_TICS_USER_C,       //  ull_int        stat
+    PIDS_TIME_ALL,          //  ull_int        stat
+    PIDS_TIME_ELAPSED,      //  ull_int        stat
+    PIDS_TIME_START,        //  ull_int        stat
+    PIDS_TTY,               //    s_int        stat
+    PIDS_TTY_NAME,          //      str        stat
+    PIDS_TTY_NUMBER,        //      str        stat
+    PIDS_VM_DATA,           //   ul_int        status
+    PIDS_VM_EXE,            //   ul_int        status
+    PIDS_VM_LIB,            //   ul_int        status
+    PIDS_VM_RSS,            //   ul_int        status
+    PIDS_VM_RSS_ANON,       //   ul_int        status
+    PIDS_VM_RSS_FILE,       //   ul_int        status
+    PIDS_VM_RSS_LOCKED,     //   ul_int        status
+    PIDS_VM_RSS_SHARED,     //   ul_int        status
+    PIDS_VM_SIZE,           //   ul_int        status
+    PIDS_VM_STACK,          //   ul_int        status
+    PIDS_VM_SWAP,           //   ul_int        status
+    PIDS_VM_USED,           //   ul_int        status
+    PIDS_VSIZE_PGS,         //   ul_int        stat
+    PIDS_WCHAN_NAME         //      str        wchan
 };
 
 enum pids_fetch_type {
index 7f735af74d102afad120ed07413b628c5d89c6ff..944887169d9878e39dc7ed46ebe14023609d395f 100644 (file)
 #define PROCPS_SLABINFO_H
 
 #ifdef __cplusplus
-extern "C{
+extern "C "{
 #endif
 
 enum slabinfo_item {
     SLABINFO_noop,            //       ( never altered )
     SLABINFO_extra,           //       ( reset to zero )
-
-    SLABS_OBJS,               //  u_int
-    SLABS_AOBJS,              //  u_int
-    SLABS_PAGES,              //  u_int
-    SLABS_SLABS,              //  u_int
-    SLABS_ASLABS,             //  u_int
-    SLABS_CACHES,             //  u_int
-    SLABS_ACACHES,            //  u_int
-    SLABS_SIZE_AVG,           //  u_int
-    SLABS_SIZE_MIN,           //  u_int
-    SLABS_SIZE_MAX,           //  u_int
-    SLABS_SIZE_ACTIVE,        // ul_int
-    SLABS_SIZE_TOTAL,         // ul_int
-
-    SLABS_DELTA_OBJS,         //  s_int
-    SLABS_DELTA_AOBJS,        //  s_int
-    SLABS_DELTA_PAGES,        //  s_int
-    SLABS_DELTA_SLABS,        //  s_int
-    SLABS_DELTA_ASLABS,       //  s_int
-    SLABS_DELTA_CACHES,       //  s_int
-    SLABS_DELTA_ACACHES,      //  s_int
-    SLABS_DELTA_SIZE_AVG,     //  s_int
-    SLABS_DELTA_SIZE_MIN,     //  s_int
-    SLABS_DELTA_SIZE_MAX,     //  s_int
-    SLABS_DELTA_SIZE_ACTIVE,  //  s_int
-    SLABS_DELTA_SIZE_TOTAL,   //  s_int
-
-    SLABNODE_NAME,            //    str
-    SLABNODE_OBJS,            //  u_int
-    SLABNODE_AOBJS,           //  u_int
-    SLABNODE_OBJ_SIZE,        //  u_int
-    SLABNODE_OBJS_PER_SLAB,   //  u_int
-    SLABNODE_PAGES_PER_SLAB,  //  u_int
-    SLABNODE_SLABS,           //  u_int
-    SLABNODE_ASLABS,          //  u_int
-    SLABNODE_USE,             //  u_int
-    SLABNODE_SIZE             // ul_int
+                              //  returns        origin, see proc(5)
+                              //  -------        -------------------
+    SLABS_OBJS,               //   u_int         /proc/slabinfo
+    SLABS_AOBJS,              //   u_int          "
+    SLABS_PAGES,              //   u_int          "
+    SLABS_SLABS,              //   u_int          "
+    SLABS_ASLABS,             //   u_int          "
+    SLABS_CACHES,             //   u_int          "
+    SLABS_ACACHES,            //   u_int          "
+    SLABS_SIZE_AVG,           //   u_int          "
+    SLABS_SIZE_MIN,           //   u_int          "
+    SLABS_SIZE_MAX,           //   u_int          "
+    SLABS_SIZE_ACTIVE,        //  ul_int          "
+    SLABS_SIZE_TOTAL,         //  ul_int          "
+
+    SLABS_DELTA_OBJS,         //   s_int         dervied from above
+    SLABS_DELTA_AOBJS,        //   s_int          "
+    SLABS_DELTA_PAGES,        //   s_int          "
+    SLABS_DELTA_SLABS,        //   s_int          "
+    SLABS_DELTA_ASLABS,       //   s_int          "
+    SLABS_DELTA_CACHES,       //   s_int          "
+    SLABS_DELTA_ACACHES,      //   s_int          "
+    SLABS_DELTA_SIZE_AVG,     //   s_int          "
+    SLABS_DELTA_SIZE_MIN,     //   s_int          "
+    SLABS_DELTA_SIZE_MAX,     //   s_int          "
+    SLABS_DELTA_SIZE_ACTIVE,  //   s_int          "
+    SLABS_DELTA_SIZE_TOTAL,   //   s_int          "
+
+    SLABNODE_NAME,            //     str         /proc/slabinfo
+    SLABNODE_OBJS,            //   u_int          "
+    SLABNODE_AOBJS,           //   u_int          "
+    SLABNODE_OBJ_SIZE,        //   u_int          "
+    SLABNODE_OBJS_PER_SLAB,   //   u_int          "
+    SLABNODE_PAGES_PER_SLAB,  //   u_int          "
+    SLABNODE_SLABS,           //   u_int          "
+    SLABNODE_ASLABS,          //   u_int          "
+    SLABNODE_USE,             //   u_int          "
+    SLABNODE_SIZE             //  ul_int          "
 };
 
 enum slabinfo_sort_order {
index b40d4e13c70d0d6c994399b516aba6cc6c0f9092..064228edf9f21b784a20e664e0eca220481fdab3 100644 (file)
@@ -26,56 +26,57 @@ extern "C" {
 enum stat_item {
     STAT_noop,                    //        ( never altered )
     STAT_extra,                   //        ( reset to zero )
-
-    STAT_TIC_ID,                  //   s_int
-    STAT_TIC_NUMA_NODE,           //   s_int
-    STAT_TIC_NUM_CONTRIBUTORS,    //   s_int
-    STAT_TIC_USER,                // ull_int
-    STAT_TIC_NICE,                // ull_int
-    STAT_TIC_SYSTEM,              // ull_int
-    STAT_TIC_IDLE,                // ull_int
-    STAT_TIC_IOWAIT,              // ull_int
-    STAT_TIC_IRQ,                 // ull_int
-    STAT_TIC_SOFTIRQ,             // ull_int
-    STAT_TIC_STOLEN,              // ull_int
-    STAT_TIC_GUEST,               // ull_int
-    STAT_TIC_GUEST_NICE,          // ull_int
-
-    STAT_TIC_SUM_TOTAL,           // ull_int
-    STAT_TIC_SUM_BUSY,            // ull_int
-    STAT_TIC_SUM_IDLE,            // ull_int
-    STAT_TIC_SUM_USER,            // ull_int
-    STAT_TIC_SUM_SYSTEM,          // ull_int
-
-    STAT_TIC_DELTA_USER,          //  sl_int
-    STAT_TIC_DELTA_NICE,          //  sl_int
-    STAT_TIC_DELTA_SYSTEM,        //  sl_int
-    STAT_TIC_DELTA_IDLE,          //  sl_int
-    STAT_TIC_DELTA_IOWAIT,        //  sl_int
-    STAT_TIC_DELTA_IRQ,           //  sl_int
-    STAT_TIC_DELTA_SOFTIRQ,       //  sl_int
-    STAT_TIC_DELTA_STOLEN,        //  sl_int
-    STAT_TIC_DELTA_GUEST,         //  sl_int
-    STAT_TIC_DELTA_GUEST_NICE,    //  sl_int
-
-    STAT_TIC_DELTA_SUM_TOTAL,     //  sl_int
-    STAT_TIC_DELTA_SUM_BUSY,      //  sl_int
-    STAT_TIC_DELTA_SUM_IDLE,      //  sl_int
-    STAT_TIC_DELTA_SUM_USER,      //  sl_int
-    STAT_TIC_DELTA_SUM_SYSTEM,    //  sl_int
-
-    STAT_SYS_CTX_SWITCHES,        //  ul_int
-    STAT_SYS_INTERRUPTS,          //  ul_int
-    STAT_SYS_PROC_BLOCKED,        //  ul_int
-    STAT_SYS_PROC_CREATED,        //  ul_int
-    STAT_SYS_PROC_RUNNING,        //  ul_int
-    STAT_SYS_TIME_OF_BOOT,        //  ul_int
-
-    STAT_SYS_DELTA_CTX_SWITCHES,  //   s_int
-    STAT_SYS_DELTA_INTERRUPTS,    //   s_int
-    STAT_SYS_DELTA_PROC_BLOCKED,  //   s_int
-    STAT_SYS_DELTA_PROC_CREATED,  //   s_int
-    STAT_SYS_DELTA_PROC_RUNNING   //   s_int
+                                  //  returns        origin, see proc(5)
+                                  //  -------        -------------------
+    STAT_TIC_ID,                  //    s_int        /proc/stat
+    STAT_TIC_NUMA_NODE,           //    s_int      [ ID based, see: numa(3) ]
+    STAT_TIC_NUM_CONTRIBUTORS,    //    s_int      [ ID based, see: numa(3) ]
+    STAT_TIC_USER,                //  ull_int        /proc/stat
+    STAT_TIC_NICE,                //  ull_int         "
+    STAT_TIC_SYSTEM,              //  ull_int         "
+    STAT_TIC_IDLE,                //  ull_int         "
+    STAT_TIC_IOWAIT,              //  ull_int         "
+    STAT_TIC_IRQ,                 //  ull_int         "
+    STAT_TIC_SOFTIRQ,             //  ull_int         "
+    STAT_TIC_STOLEN,              //  ull_int         "
+    STAT_TIC_GUEST,               //  ull_int         "
+    STAT_TIC_GUEST_NICE,          //  ull_int         "
+
+    STAT_TIC_SUM_TOTAL,           //  ull_int         "
+    STAT_TIC_SUM_BUSY,            //  ull_int         "
+    STAT_TIC_SUM_IDLE,            //  ull_int         "
+    STAT_TIC_SUM_USER,            //  ull_int         "
+    STAT_TIC_SUM_SYSTEM,          //  ull_int         "
+
+    STAT_TIC_DELTA_USER,          //   sl_int        dervied from above
+    STAT_TIC_DELTA_NICE,          //   sl_int         "
+    STAT_TIC_DELTA_SYSTEM,        //   sl_int         "
+    STAT_TIC_DELTA_IDLE,          //   sl_int         "
+    STAT_TIC_DELTA_IOWAIT,        //   sl_int         "
+    STAT_TIC_DELTA_IRQ,           //   sl_int         "
+    STAT_TIC_DELTA_SOFTIRQ,       //   sl_int         "
+    STAT_TIC_DELTA_STOLEN,        //   sl_int         "
+    STAT_TIC_DELTA_GUEST,         //   sl_int         "
+    STAT_TIC_DELTA_GUEST_NICE,    //   sl_int         "
+
+    STAT_TIC_DELTA_SUM_TOTAL,     //   sl_int         "
+    STAT_TIC_DELTA_SUM_BUSY,      //   sl_int         "
+    STAT_TIC_DELTA_SUM_IDLE,      //   sl_int         "
+    STAT_TIC_DELTA_SUM_USER,      //   sl_int         "
+    STAT_TIC_DELTA_SUM_SYSTEM,    //   sl_int         "
+
+    STAT_SYS_CTX_SWITCHES,        //   ul_int        /proc/stat
+    STAT_SYS_INTERRUPTS,          //   ul_int         "
+    STAT_SYS_PROC_BLOCKED,        //   ul_int         "
+    STAT_SYS_PROC_CREATED,        //   ul_int         "
+    STAT_SYS_PROC_RUNNING,        //   ul_int         "
+    STAT_SYS_TIME_OF_BOOT,        //   ul_int         "
+
+    STAT_SYS_DELTA_CTX_SWITCHES,  //    s_int        dervied from above
+    STAT_SYS_DELTA_INTERRUPTS,    //    s_int         "
+    STAT_SYS_DELTA_PROC_BLOCKED,  //    s_int         "
+    STAT_SYS_DELTA_PROC_CREATED,  //    s_int         "
+    STAT_SYS_DELTA_PROC_RUNNING   //    s_int         "
 };
 
 enum stat_reap_type {
index 713f877095f046db9a495c1e54dfba02256a43f1..7dbe8436f478eb142d7b155cd2a1e73a0f7347e8 100644 (file)
@@ -31,244 +31,245 @@ extern "C" {
 enum vmstat_item {
     VMSTAT_noop,                                 //       ( never altered )
     VMSTAT_extra,                                //       ( reset to zero )
+                                                 //  returns        origin, see proc(5)
+                                                 //  -------        -------------------
+    VMSTAT_ALLOCSTALL,                           //  ul_int         /proc/vmstat
+    VMSTAT_BALLOON_DEFLATE,                      //  ul_int          "
+    VMSTAT_BALLOON_INFLATE,                      //  ul_int          "
+    VMSTAT_BALLOON_MIGRATE,                      //  ul_int          "
+    VMSTAT_COMPACT_FAIL,                         //  ul_int          "
+    VMSTAT_COMPACT_FREE_SCANNED,                 //  ul_int          "
+    VMSTAT_COMPACT_ISOLATED,                     //  ul_int          "
+    VMSTAT_COMPACT_MIGRATE_SCANNED,              //  ul_int          "
+    VMSTAT_COMPACT_STALL,                        //  ul_int          "
+    VMSTAT_COMPACT_SUCCESS,                      //  ul_int          "
+    VMSTAT_DROP_PAGECACHE,                       //  ul_int          "
+    VMSTAT_DROP_SLAB,                            //  ul_int          "
+    VMSTAT_HTLB_BUDDY_ALLOC_FAIL,                //  ul_int          "
+    VMSTAT_HTLB_BUDDY_ALLOC_SUCCESS,             //  ul_int          "
+    VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY,        //  ul_int          "
+    VMSTAT_KSWAPD_INODESTEAL,                    //  ul_int          "
+    VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY,         //  ul_int          "
+    VMSTAT_NR_ACTIVE_ANON,                       //  ul_int          "
+    VMSTAT_NR_ACTIVE_FILE,                       //  ul_int          "
+    VMSTAT_NR_ALLOC_BATCH,                       //  ul_int          "
+    VMSTAT_NR_ANON_PAGES,                        //  ul_int          "
+    VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES,        //  ul_int          "
+    VMSTAT_NR_BOUNCE,                            //  ul_int          "
+    VMSTAT_NR_DIRTIED,                           //  ul_int          "
+    VMSTAT_NR_DIRTY,                             //  ul_int          "
+    VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD,        //  ul_int          "
+    VMSTAT_NR_DIRTY_THRESHOLD,                   //  ul_int          "
+    VMSTAT_NR_FILE_PAGES,                        //  ul_int          "
+    VMSTAT_NR_FREE_CMA,                          //  ul_int          "
+    VMSTAT_NR_FREE_PAGES,                        //  ul_int          "
+    VMSTAT_NR_INACTIVE_ANON,                     //  ul_int          "
+    VMSTAT_NR_INACTIVE_FILE,                     //  ul_int          "
+    VMSTAT_NR_ISOLATED_ANON,                     //  ul_int          "
+    VMSTAT_NR_ISOLATED_FILE,                     //  ul_int          "
+    VMSTAT_NR_KERNEL_STACK,                      //  ul_int          "
+    VMSTAT_NR_MAPPED,                            //  ul_int          "
+    VMSTAT_NR_MLOCK,                             //  ul_int          "
+    VMSTAT_NR_PAGES_SCANNED,                     //  ul_int          "
+    VMSTAT_NR_PAGE_TABLE_PAGES,                  //  ul_int          "
+    VMSTAT_NR_SHMEM,                             //  ul_int          "
+    VMSTAT_NR_SLAB_RECLAIMABLE,                  //  ul_int          "
+    VMSTAT_NR_SLAB_UNRECLAIMABLE,                //  ul_int          "
+    VMSTAT_NR_UNEVICTABLE,                       //  ul_int          "
+    VMSTAT_NR_UNSTABLE,                          //  ul_int          "
+    VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM,          //  ul_int          "
+    VMSTAT_NR_VMSCAN_WRITE,                      //  ul_int          "
+    VMSTAT_NR_WRITEBACK,                         //  ul_int          "
+    VMSTAT_NR_WRITEBACK_TEMP,                    //  ul_int          "
+    VMSTAT_NR_WRITTEN,                           //  ul_int          "
+    VMSTAT_NUMA_FOREIGN,                         //  ul_int          "
+    VMSTAT_NUMA_HINT_FAULTS,                     //  ul_int          "
+    VMSTAT_NUMA_HINT_FAULTS_LOCAL,               //  ul_int          "
+    VMSTAT_NUMA_HIT,                             //  ul_int          "
+    VMSTAT_NUMA_HUGE_PTE_UPDATES,                //  ul_int          "
+    VMSTAT_NUMA_INTERLEAVE,                      //  ul_int          "
+    VMSTAT_NUMA_LOCAL,                           //  ul_int          "
+    VMSTAT_NUMA_MISS,                            //  ul_int          "
+    VMSTAT_NUMA_OTHER,                           //  ul_int          "
+    VMSTAT_NUMA_PAGES_MIGRATED,                  //  ul_int          "
+    VMSTAT_NUMA_PTE_UPDATES,                     //  ul_int          "
+    VMSTAT_PAGEOUTRUN,                           //  ul_int          "
+    VMSTAT_PGACTIVATE,                           //  ul_int          "
+    VMSTAT_PGALLOC_DMA,                          //  ul_int          "
+    VMSTAT_PGALLOC_DMA32,                        //  ul_int          "
+    VMSTAT_PGALLOC_MOVABLE,                      //  ul_int          "
+    VMSTAT_PGALLOC_NORMAL,                       //  ul_int          "
+    VMSTAT_PGDEACTIVATE,                         //  ul_int          "
+    VMSTAT_PGFAULT,                              //  ul_int          "
+    VMSTAT_PGFREE,                               //  ul_int          "
+    VMSTAT_PGINODESTEAL,                         //  ul_int          "
+    VMSTAT_PGMAJFAULT,                           //  ul_int          "
+    VMSTAT_PGMIGRATE_FAIL,                       //  ul_int          "
+    VMSTAT_PGMIGRATE_SUCCESS,                    //  ul_int          "
+    VMSTAT_PGPGIN,                               //  ul_int          "
+    VMSTAT_PGPGOUT,                              //  ul_int          "
+    VMSTAT_PGREFILL_DMA,                         //  ul_int          "
+    VMSTAT_PGREFILL_DMA32,                       //  ul_int          "
+    VMSTAT_PGREFILL_MOVABLE,                     //  ul_int          "
+    VMSTAT_PGREFILL_NORMAL,                      //  ul_int          "
+    VMSTAT_PGROTATED,                            //  ul_int          "
+    VMSTAT_PGSCAN_DIRECT_DMA,                    //  ul_int          "
+    VMSTAT_PGSCAN_DIRECT_DMA32,                  //  ul_int          "
+    VMSTAT_PGSCAN_DIRECT_MOVABLE,                //  ul_int          "
+    VMSTAT_PGSCAN_DIRECT_NORMAL,                 //  ul_int          "
+    VMSTAT_PGSCAN_DIRECT_THROTTLE,               //  ul_int          "
+    VMSTAT_PGSCAN_KSWAPD_DMA,                    //  ul_int          "
+    VMSTAT_PGSCAN_KSWAPD_DMA32,                  //  ul_int          "
+    VMSTAT_PGSCAN_KSWAPD_MOVEABLE,               //  ul_int          "
+    VMSTAT_PGSCAN_KSWAPD_NORMAL,                 //  ul_int          "
+    VMSTAT_PGSTEAL_DIRECT_DMA,                   //  ul_int          "
+    VMSTAT_PGSTEAL_DIRECT_DMA32,                 //  ul_int          "
+    VMSTAT_PGSTEAL_DIRECT_MOVABLE,               //  ul_int          "
+    VMSTAT_PGSTEAL_DIRECT_NORMAL,                //  ul_int          "
+    VMSTAT_PGSTEAL_KSWAPD_DMA,                   //  ul_int          "
+    VMSTAT_PGSTEAL_KSWAPD_DMA32,                 //  ul_int          "
+    VMSTAT_PGSTEAL_KSWAPD_MOVABLE,               //  ul_int          "
+    VMSTAT_PGSTEAL_KSWAPD_NORMAL,                //  ul_int          "
+    VMSTAT_PSWPIN,                               //  ul_int          "
+    VMSTAT_PSWPOUT,                              //  ul_int          "
+    VMSTAT_SLABS_SCANNED,                        //  ul_int          "
+    VMSTAT_THP_COLLAPSE_ALLOC,                   //  ul_int          "
+    VMSTAT_THP_COLLAPSE_ALLOC_FAILED,            //  ul_int          "
+    VMSTAT_THP_FAULT_ALLOC,                      //  ul_int          "
+    VMSTAT_THP_FAULT_FALLBACK,                   //  ul_int          "
+    VMSTAT_THP_SPLIT,                            //  ul_int          "
+    VMSTAT_THP_ZERO_PAGE_ALLOC,                  //  ul_int          "
+    VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED,           //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_CLEARED,              //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_CULLED,               //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_MLOCKED,              //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_MUNLOCKED,            //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_RESCUED,              //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_SCANNED,              //  ul_int          "
+    VMSTAT_UNEVICTABLE_PGS_STRANDED,             //  ul_int          "
+    VMSTAT_WORKINGSET_ACTIVATE,                  //  ul_int          "
+    VMSTAT_WORKINGSET_NODERECLAIM,               //  ul_int          "
+    VMSTAT_WORKINGSET_REFAULT,                   //  ul_int          "
+    VMSTAT_ZONE_RECLAIM_FAILED,                  //  ul_int          "
 
-    VMSTAT_ALLOCSTALL,                           // ul_int
-    VMSTAT_BALLOON_DEFLATE,                      // ul_int
-    VMSTAT_BALLOON_INFLATE,                      // ul_int
-    VMSTAT_BALLOON_MIGRATE,                      // ul_int
-    VMSTAT_COMPACT_FAIL,                         // ul_int
-    VMSTAT_COMPACT_FREE_SCANNED,                 // ul_int
-    VMSTAT_COMPACT_ISOLATED,                     // ul_int
-    VMSTAT_COMPACT_MIGRATE_SCANNED,              // ul_int
-    VMSTAT_COMPACT_STALL,                        // ul_int
-    VMSTAT_COMPACT_SUCCESS,                      // ul_int
-    VMSTAT_DROP_PAGECACHE,                       // ul_int
-    VMSTAT_DROP_SLAB,                            // ul_int
-    VMSTAT_HTLB_BUDDY_ALLOC_FAIL,                // ul_int
-    VMSTAT_HTLB_BUDDY_ALLOC_SUCCESS,             // ul_int
-    VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY,        // ul_int
-    VMSTAT_KSWAPD_INODESTEAL,                    // ul_int
-    VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY,         // ul_int
-    VMSTAT_NR_ACTIVE_ANON,                       // ul_int
-    VMSTAT_NR_ACTIVE_FILE,                       // ul_int
-    VMSTAT_NR_ALLOC_BATCH,                       // ul_int
-    VMSTAT_NR_ANON_PAGES,                        // ul_int
-    VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES,        // ul_int
-    VMSTAT_NR_BOUNCE,                            // ul_int
-    VMSTAT_NR_DIRTIED,                           // ul_int
-    VMSTAT_NR_DIRTY,                             // ul_int
-    VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD,        // ul_int
-    VMSTAT_NR_DIRTY_THRESHOLD,                   // ul_int
-    VMSTAT_NR_FILE_PAGES,                        // ul_int
-    VMSTAT_NR_FREE_CMA,                          // ul_int
-    VMSTAT_NR_FREE_PAGES,                        // ul_int
-    VMSTAT_NR_INACTIVE_ANON,                     // ul_int
-    VMSTAT_NR_INACTIVE_FILE,                     // ul_int
-    VMSTAT_NR_ISOLATED_ANON,                     // ul_int
-    VMSTAT_NR_ISOLATED_FILE,                     // ul_int
-    VMSTAT_NR_KERNEL_STACK,                      // ul_int
-    VMSTAT_NR_MAPPED,                            // ul_int
-    VMSTAT_NR_MLOCK,                             // ul_int
-    VMSTAT_NR_PAGES_SCANNED,                     // ul_int
-    VMSTAT_NR_PAGE_TABLE_PAGES,                  // ul_int
-    VMSTAT_NR_SHMEM,                             // ul_int
-    VMSTAT_NR_SLAB_RECLAIMABLE,                  // ul_int
-    VMSTAT_NR_SLAB_UNRECLAIMABLE,                // ul_int
-    VMSTAT_NR_UNEVICTABLE,                       // ul_int
-    VMSTAT_NR_UNSTABLE,                          // ul_int
-    VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM,          // ul_int
-    VMSTAT_NR_VMSCAN_WRITE,                      // ul_int
-    VMSTAT_NR_WRITEBACK,                         // ul_int
-    VMSTAT_NR_WRITEBACK_TEMP,                    // ul_int
-    VMSTAT_NR_WRITTEN,                           // ul_int
-    VMSTAT_NUMA_FOREIGN,                         // ul_int
-    VMSTAT_NUMA_HINT_FAULTS,                     // ul_int
-    VMSTAT_NUMA_HINT_FAULTS_LOCAL,               // ul_int
-    VMSTAT_NUMA_HIT,                             // ul_int
-    VMSTAT_NUMA_HUGE_PTE_UPDATES,                // ul_int
-    VMSTAT_NUMA_INTERLEAVE,                      // ul_int
-    VMSTAT_NUMA_LOCAL,                           // ul_int
-    VMSTAT_NUMA_MISS,                            // ul_int
-    VMSTAT_NUMA_OTHER,                           // ul_int
-    VMSTAT_NUMA_PAGES_MIGRATED,                  // ul_int
-    VMSTAT_NUMA_PTE_UPDATES,                     // ul_int
-    VMSTAT_PAGEOUTRUN,                           // ul_int
-    VMSTAT_PGACTIVATE,                           // ul_int
-    VMSTAT_PGALLOC_DMA,                          // ul_int
-    VMSTAT_PGALLOC_DMA32,                        // ul_int
-    VMSTAT_PGALLOC_MOVABLE,                      // ul_int
-    VMSTAT_PGALLOC_NORMAL,                       // ul_int
-    VMSTAT_PGDEACTIVATE,                         // ul_int
-    VMSTAT_PGFAULT,                              // ul_int
-    VMSTAT_PGFREE,                               // ul_int
-    VMSTAT_PGINODESTEAL,                         // ul_int
-    VMSTAT_PGMAJFAULT,                           // ul_int
-    VMSTAT_PGMIGRATE_FAIL,                       // ul_int
-    VMSTAT_PGMIGRATE_SUCCESS,                    // ul_int
-    VMSTAT_PGPGIN,                               // ul_int
-    VMSTAT_PGPGOUT,                              // ul_int
-    VMSTAT_PGREFILL_DMA,                         // ul_int
-    VMSTAT_PGREFILL_DMA32,                       // ul_int
-    VMSTAT_PGREFILL_MOVABLE,                     // ul_int
-    VMSTAT_PGREFILL_NORMAL,                      // ul_int
-    VMSTAT_PGROTATED,                            // ul_int
-    VMSTAT_PGSCAN_DIRECT_DMA,                    // ul_int
-    VMSTAT_PGSCAN_DIRECT_DMA32,                  // ul_int
-    VMSTAT_PGSCAN_DIRECT_MOVABLE,                // ul_int
-    VMSTAT_PGSCAN_DIRECT_NORMAL,                 // ul_int
-    VMSTAT_PGSCAN_DIRECT_THROTTLE,               // ul_int
-    VMSTAT_PGSCAN_KSWAPD_DMA,                    // ul_int
-    VMSTAT_PGSCAN_KSWAPD_DMA32,                  // ul_int
-    VMSTAT_PGSCAN_KSWAPD_MOVEABLE,               // ul_int
-    VMSTAT_PGSCAN_KSWAPD_NORMAL,                 // ul_int
-    VMSTAT_PGSTEAL_DIRECT_DMA,                   // ul_int
-    VMSTAT_PGSTEAL_DIRECT_DMA32,                 // ul_int
-    VMSTAT_PGSTEAL_DIRECT_MOVABLE,               // ul_int
-    VMSTAT_PGSTEAL_DIRECT_NORMAL,                // ul_int
-    VMSTAT_PGSTEAL_KSWAPD_DMA,                   // ul_int
-    VMSTAT_PGSTEAL_KSWAPD_DMA32,                 // ul_int
-    VMSTAT_PGSTEAL_KSWAPD_MOVABLE,               // ul_int
-    VMSTAT_PGSTEAL_KSWAPD_NORMAL,                // ul_int
-    VMSTAT_PSWPIN,                               // ul_int
-    VMSTAT_PSWPOUT,                              // ul_int
-    VMSTAT_SLABS_SCANNED,                        // ul_int
-    VMSTAT_THP_COLLAPSE_ALLOC,                   // ul_int
-    VMSTAT_THP_COLLAPSE_ALLOC_FAILED,            // ul_int
-    VMSTAT_THP_FAULT_ALLOC,                      // ul_int
-    VMSTAT_THP_FAULT_FALLBACK,                   // ul_int
-    VMSTAT_THP_SPLIT,                            // ul_int
-    VMSTAT_THP_ZERO_PAGE_ALLOC,                  // ul_int
-    VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED,           // ul_int
-    VMSTAT_UNEVICTABLE_PGS_CLEARED,              // ul_int
-    VMSTAT_UNEVICTABLE_PGS_CULLED,               // ul_int
-    VMSTAT_UNEVICTABLE_PGS_MLOCKED,              // ul_int
-    VMSTAT_UNEVICTABLE_PGS_MUNLOCKED,            // ul_int
-    VMSTAT_UNEVICTABLE_PGS_RESCUED,              // ul_int
-    VMSTAT_UNEVICTABLE_PGS_SCANNED,              // ul_int
-    VMSTAT_UNEVICTABLE_PGS_STRANDED,             // ul_int
-    VMSTAT_WORKINGSET_ACTIVATE,                  // ul_int
-    VMSTAT_WORKINGSET_NODERECLAIM,               // ul_int
-    VMSTAT_WORKINGSET_REFAULT,                   // ul_int
-    VMSTAT_ZONE_RECLAIM_FAILED,                  // ul_int
-
-    VMSTAT_DELTA_ALLOCSTALL,                     // sl_int
-    VMSTAT_DELTA_BALLOON_DEFLATE,                // sl_int
-    VMSTAT_DELTA_BALLOON_INFLATE,                // sl_int
-    VMSTAT_DELTA_BALLOON_MIGRATE,                // sl_int
-    VMSTAT_DELTA_COMPACT_FAIL,                   // sl_int
-    VMSTAT_DELTA_COMPACT_FREE_SCANNED,           // sl_int
-    VMSTAT_DELTA_COMPACT_ISOLATED,               // sl_int
-    VMSTAT_DELTA_COMPACT_MIGRATE_SCANNED,        // sl_int
-    VMSTAT_DELTA_COMPACT_STALL,                  // sl_int
-    VMSTAT_DELTA_COMPACT_SUCCESS,                // sl_int
-    VMSTAT_DELTA_DROP_PAGECACHE,                 // sl_int
-    VMSTAT_DELTA_DROP_SLAB,                      // sl_int
-    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_FAIL,          // sl_int
-    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_SUCCESS,       // sl_int
-    VMSTAT_DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,  // sl_int
-    VMSTAT_DELTA_KSWAPD_INODESTEAL,              // sl_int
-    VMSTAT_DELTA_KSWAPD_LOW_WMARK_HIT_QUICKLY,   // sl_int
-    VMSTAT_DELTA_NR_ACTIVE_ANON,                 // sl_int
-    VMSTAT_DELTA_NR_ACTIVE_FILE,                 // sl_int
-    VMSTAT_DELTA_NR_ALLOC_BATCH,                 // sl_int
-    VMSTAT_DELTA_NR_ANON_PAGES,                  // sl_int
-    VMSTAT_DELTA_NR_ANON_TRANSPARENT_HUGEPAGES,  // sl_int
-    VMSTAT_DELTA_NR_BOUNCE,                      // sl_int
-    VMSTAT_DELTA_NR_DIRTIED,                     // sl_int
-    VMSTAT_DELTA_NR_DIRTY,                       // sl_int
-    VMSTAT_DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,  // sl_int
-    VMSTAT_DELTA_NR_DIRTY_THRESHOLD,             // sl_int
-    VMSTAT_DELTA_NR_FILE_PAGES,                  // sl_int
-    VMSTAT_DELTA_NR_FREE_CMA,                    // sl_int
-    VMSTAT_DELTA_NR_FREE_PAGES,                  // sl_int
-    VMSTAT_DELTA_NR_INACTIVE_ANON,               // sl_int
-    VMSTAT_DELTA_NR_INACTIVE_FILE,               // sl_int
-    VMSTAT_DELTA_NR_ISOLATED_ANON,               // sl_int
-    VMSTAT_DELTA_NR_ISOLATED_FILE,               // sl_int
-    VMSTAT_DELTA_NR_KERNEL_STACK,                // sl_int
-    VMSTAT_DELTA_NR_MAPPED,                      // sl_int
-    VMSTAT_DELTA_NR_MLOCK,                       // sl_int
-    VMSTAT_DELTA_NR_PAGES_SCANNED,               // sl_int
-    VMSTAT_DELTA_NR_PAGE_TABLE_PAGES,            // sl_int
-    VMSTAT_DELTA_NR_SHMEM,                       // sl_int
-    VMSTAT_DELTA_NR_SLAB_RECLAIMABLE,            // sl_int
-    VMSTAT_DELTA_NR_SLAB_UNRECLAIMABLE,          // sl_int
-    VMSTAT_DELTA_NR_UNEVICTABLE,                 // sl_int
-    VMSTAT_DELTA_NR_UNSTABLE,                    // sl_int
-    VMSTAT_DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,    // sl_int
-    VMSTAT_DELTA_NR_VMSCAN_WRITE,                // sl_int
-    VMSTAT_DELTA_NR_WRITEBACK,                   // sl_int
-    VMSTAT_DELTA_NR_WRITEBACK_TEMP,              // sl_int
-    VMSTAT_DELTA_NR_WRITTEN,                     // sl_int
-    VMSTAT_DELTA_NUMA_FOREIGN,                   // sl_int
-    VMSTAT_DELTA_NUMA_HINT_FAULTS,               // sl_int
-    VMSTAT_DELTA_NUMA_HINT_FAULTS_LOCAL,         // sl_int
-    VMSTAT_DELTA_NUMA_HIT,                       // sl_int
-    VMSTAT_DELTA_NUMA_HUGE_PTE_UPDATES,          // sl_int
-    VMSTAT_DELTA_NUMA_INTERLEAVE,                // sl_int
-    VMSTAT_DELTA_NUMA_LOCAL,                     // sl_int
-    VMSTAT_DELTA_NUMA_MISS,                      // sl_int
-    VMSTAT_DELTA_NUMA_OTHER,                     // sl_int
-    VMSTAT_DELTA_NUMA_PAGES_MIGRATED,            // sl_int
-    VMSTAT_DELTA_NUMA_PTE_UPDATES,               // sl_int
-    VMSTAT_DELTA_PAGEOUTRUN,                     // sl_int
-    VMSTAT_DELTA_PGACTIVATE,                     // sl_int
-    VMSTAT_DELTA_PGALLOC_DMA,                    // sl_int
-    VMSTAT_DELTA_PGALLOC_DMA32,                  // sl_int
-    VMSTAT_DELTA_PGALLOC_MOVABLE,                // sl_int
-    VMSTAT_DELTA_PGALLOC_NORMAL,                 // sl_int
-    VMSTAT_DELTA_PGDEACTIVATE,                   // sl_int
-    VMSTAT_DELTA_PGFAULT,                        // sl_int
-    VMSTAT_DELTA_PGFREE,                         // sl_int
-    VMSTAT_DELTA_PGINODESTEAL,                   // sl_int
-    VMSTAT_DELTA_PGMAJFAULT,                     // sl_int
-    VMSTAT_DELTA_PGMIGRATE_FAIL,                 // sl_int
-    VMSTAT_DELTA_PGMIGRATE_SUCCESS,              // sl_int
-    VMSTAT_DELTA_PGPGIN,                         // sl_int
-    VMSTAT_DELTA_PGPGOUT,                        // sl_int
-    VMSTAT_DELTA_PGREFILL_DMA,                   // sl_int
-    VMSTAT_DELTA_PGREFILL_DMA32,                 // sl_int
-    VMSTAT_DELTA_PGREFILL_MOVABLE,               // sl_int
-    VMSTAT_DELTA_PGREFILL_NORMAL,                // sl_int
-    VMSTAT_DELTA_PGROTATED,                      // sl_int
-    VMSTAT_DELTA_PGSCAN_DIRECT_DMA,              // sl_int
-    VMSTAT_DELTA_PGSCAN_DIRECT_DMA32,            // sl_int
-    VMSTAT_DELTA_PGSCAN_DIRECT_MOVABLE,          // sl_int
-    VMSTAT_DELTA_PGSCAN_DIRECT_NORMAL,           // sl_int
-    VMSTAT_DELTA_PGSCAN_DIRECT_THROTTLE,         // sl_int
-    VMSTAT_DELTA_PGSCAN_KSWAPD_DMA,              // sl_int
-    VMSTAT_DELTA_PGSCAN_KSWAPD_DMA32,            // sl_int
-    VMSTAT_DELTA_PGSCAN_KSWAPD_MOVEABLE,         // sl_int
-    VMSTAT_DELTA_PGSCAN_KSWAPD_NORMAL,           // sl_int
-    VMSTAT_DELTA_PGSTEAL_DIRECT_DMA,             // sl_int
-    VMSTAT_DELTA_PGSTEAL_DIRECT_DMA32,           // sl_int
-    VMSTAT_DELTA_PGSTEAL_DIRECT_MOVABLE,         // sl_int
-    VMSTAT_DELTA_PGSTEAL_DIRECT_NORMAL,          // sl_int
-    VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA,             // sl_int
-    VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA32,           // sl_int
-    VMSTAT_DELTA_PGSTEAL_KSWAPD_MOVABLE,         // sl_int
-    VMSTAT_DELTA_PGSTEAL_KSWAPD_NORMAL,          // sl_int
-    VMSTAT_DELTA_PSWPIN,                         // sl_int
-    VMSTAT_DELTA_PSWPOUT,                        // sl_int
-    VMSTAT_DELTA_SLABS_SCANNED,                  // sl_int
-    VMSTAT_DELTA_THP_COLLAPSE_ALLOC,             // sl_int
-    VMSTAT_DELTA_THP_COLLAPSE_ALLOC_FAILED,      // sl_int
-    VMSTAT_DELTA_THP_FAULT_ALLOC,                // sl_int
-    VMSTAT_DELTA_THP_FAULT_FALLBACK,             // sl_int
-    VMSTAT_DELTA_THP_SPLIT,                      // sl_int
-    VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC,            // sl_int
-    VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC_FAILED,     // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_CLEARED,        // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_CULLED,         // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_MLOCKED,        // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_MUNLOCKED,      // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_RESCUED,        // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_SCANNED,        // sl_int
-    VMSTAT_DELTA_UNEVICTABLE_PGS_STRANDED,       // sl_int
-    VMSTAT_DELTA_WORKINGSET_ACTIVATE,            // sl_int
-    VMSTAT_DELTA_WORKINGSET_NODERECLAIM,         // sl_int
-    VMSTAT_DELTA_WORKINGSET_REFAULT,             // sl_int
-    VMSTAT_DELTA_ZONE_RECLAIM_FAILED             // sl_int
+    VMSTAT_DELTA_ALLOCSTALL,                     //  sl_int         dervied from above
+    VMSTAT_DELTA_BALLOON_DEFLATE,                //  sl_int          "
+    VMSTAT_DELTA_BALLOON_INFLATE,                //  sl_int          "
+    VMSTAT_DELTA_BALLOON_MIGRATE,                //  sl_int          "
+    VMSTAT_DELTA_COMPACT_FAIL,                   //  sl_int          "
+    VMSTAT_DELTA_COMPACT_FREE_SCANNED,           //  sl_int          "
+    VMSTAT_DELTA_COMPACT_ISOLATED,               //  sl_int          "
+    VMSTAT_DELTA_COMPACT_MIGRATE_SCANNED,        //  sl_int          "
+    VMSTAT_DELTA_COMPACT_STALL,                  //  sl_int          "
+    VMSTAT_DELTA_COMPACT_SUCCESS,                //  sl_int          "
+    VMSTAT_DELTA_DROP_PAGECACHE,                 //  sl_int          "
+    VMSTAT_DELTA_DROP_SLAB,                      //  sl_int          "
+    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_FAIL,          //  sl_int          "
+    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_SUCCESS,       //  sl_int          "
+    VMSTAT_DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,  //  sl_int          "
+    VMSTAT_DELTA_KSWAPD_INODESTEAL,              //  sl_int          "
+    VMSTAT_DELTA_KSWAPD_LOW_WMARK_HIT_QUICKLY,   //  sl_int          "
+    VMSTAT_DELTA_NR_ACTIVE_ANON,                 //  sl_int          "
+    VMSTAT_DELTA_NR_ACTIVE_FILE,                 //  sl_int          "
+    VMSTAT_DELTA_NR_ALLOC_BATCH,                 //  sl_int          "
+    VMSTAT_DELTA_NR_ANON_PAGES,                  //  sl_int          "
+    VMSTAT_DELTA_NR_ANON_TRANSPARENT_HUGEPAGES,  //  sl_int          "
+    VMSTAT_DELTA_NR_BOUNCE,                      //  sl_int          "
+    VMSTAT_DELTA_NR_DIRTIED,                     //  sl_int          "
+    VMSTAT_DELTA_NR_DIRTY,                       //  sl_int          "
+    VMSTAT_DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,  //  sl_int          "
+    VMSTAT_DELTA_NR_DIRTY_THRESHOLD,             //  sl_int          "
+    VMSTAT_DELTA_NR_FILE_PAGES,                  //  sl_int          "
+    VMSTAT_DELTA_NR_FREE_CMA,                    //  sl_int          "
+    VMSTAT_DELTA_NR_FREE_PAGES,                  //  sl_int          "
+    VMSTAT_DELTA_NR_INACTIVE_ANON,               //  sl_int          "
+    VMSTAT_DELTA_NR_INACTIVE_FILE,               //  sl_int          "
+    VMSTAT_DELTA_NR_ISOLATED_ANON,               //  sl_int          "
+    VMSTAT_DELTA_NR_ISOLATED_FILE,               //  sl_int          "
+    VMSTAT_DELTA_NR_KERNEL_STACK,                //  sl_int          "
+    VMSTAT_DELTA_NR_MAPPED,                      //  sl_int          "
+    VMSTAT_DELTA_NR_MLOCK,                       //  sl_int          "
+    VMSTAT_DELTA_NR_PAGES_SCANNED,               //  sl_int          "
+    VMSTAT_DELTA_NR_PAGE_TABLE_PAGES,            //  sl_int          "
+    VMSTAT_DELTA_NR_SHMEM,                       //  sl_int          "
+    VMSTAT_DELTA_NR_SLAB_RECLAIMABLE,            //  sl_int          "
+    VMSTAT_DELTA_NR_SLAB_UNRECLAIMABLE,          //  sl_int          "
+    VMSTAT_DELTA_NR_UNEVICTABLE,                 //  sl_int          "
+    VMSTAT_DELTA_NR_UNSTABLE,                    //  sl_int          "
+    VMSTAT_DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,    //  sl_int          "
+    VMSTAT_DELTA_NR_VMSCAN_WRITE,                //  sl_int          "
+    VMSTAT_DELTA_NR_WRITEBACK,                   //  sl_int          "
+    VMSTAT_DELTA_NR_WRITEBACK_TEMP,              //  sl_int          "
+    VMSTAT_DELTA_NR_WRITTEN,                     //  sl_int          "
+    VMSTAT_DELTA_NUMA_FOREIGN,                   //  sl_int          "
+    VMSTAT_DELTA_NUMA_HINT_FAULTS,               //  sl_int          "
+    VMSTAT_DELTA_NUMA_HINT_FAULTS_LOCAL,         //  sl_int          "
+    VMSTAT_DELTA_NUMA_HIT,                       //  sl_int          "
+    VMSTAT_DELTA_NUMA_HUGE_PTE_UPDATES,          //  sl_int          "
+    VMSTAT_DELTA_NUMA_INTERLEAVE,                //  sl_int          "
+    VMSTAT_DELTA_NUMA_LOCAL,                     //  sl_int          "
+    VMSTAT_DELTA_NUMA_MISS,                      //  sl_int          "
+    VMSTAT_DELTA_NUMA_OTHER,                     //  sl_int          "
+    VMSTAT_DELTA_NUMA_PAGES_MIGRATED,            //  sl_int          "
+    VMSTAT_DELTA_NUMA_PTE_UPDATES,               //  sl_int          "
+    VMSTAT_DELTA_PAGEOUTRUN,                     //  sl_int          "
+    VMSTAT_DELTA_PGACTIVATE,                     //  sl_int          "
+    VMSTAT_DELTA_PGALLOC_DMA,                    //  sl_int          "
+    VMSTAT_DELTA_PGALLOC_DMA32,                  //  sl_int          "
+    VMSTAT_DELTA_PGALLOC_MOVABLE,                //  sl_int          "
+    VMSTAT_DELTA_PGALLOC_NORMAL,                 //  sl_int          "
+    VMSTAT_DELTA_PGDEACTIVATE,                   //  sl_int          "
+    VMSTAT_DELTA_PGFAULT,                        //  sl_int          "
+    VMSTAT_DELTA_PGFREE,                         //  sl_int          "
+    VMSTAT_DELTA_PGINODESTEAL,                   //  sl_int          "
+    VMSTAT_DELTA_PGMAJFAULT,                     //  sl_int          "
+    VMSTAT_DELTA_PGMIGRATE_FAIL,                 //  sl_int          "
+    VMSTAT_DELTA_PGMIGRATE_SUCCESS,              //  sl_int          "
+    VMSTAT_DELTA_PGPGIN,                         //  sl_int          "
+    VMSTAT_DELTA_PGPGOUT,                        //  sl_int          "
+    VMSTAT_DELTA_PGREFILL_DMA,                   //  sl_int          "
+    VMSTAT_DELTA_PGREFILL_DMA32,                 //  sl_int          "
+    VMSTAT_DELTA_PGREFILL_MOVABLE,               //  sl_int          "
+    VMSTAT_DELTA_PGREFILL_NORMAL,                //  sl_int          "
+    VMSTAT_DELTA_PGROTATED,                      //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_DIRECT_DMA,              //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_DIRECT_DMA32,            //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_DIRECT_MOVABLE,          //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_DIRECT_NORMAL,           //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_DIRECT_THROTTLE,         //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_KSWAPD_DMA,              //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_KSWAPD_DMA32,            //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_KSWAPD_MOVEABLE,         //  sl_int          "
+    VMSTAT_DELTA_PGSCAN_KSWAPD_NORMAL,           //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_DIRECT_DMA,             //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_DIRECT_DMA32,           //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_DIRECT_MOVABLE,         //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_DIRECT_NORMAL,          //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA,             //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA32,           //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_KSWAPD_MOVABLE,         //  sl_int          "
+    VMSTAT_DELTA_PGSTEAL_KSWAPD_NORMAL,          //  sl_int          "
+    VMSTAT_DELTA_PSWPIN,                         //  sl_int          "
+    VMSTAT_DELTA_PSWPOUT,                        //  sl_int          "
+    VMSTAT_DELTA_SLABS_SCANNED,                  //  sl_int          "
+    VMSTAT_DELTA_THP_COLLAPSE_ALLOC,             //  sl_int          "
+    VMSTAT_DELTA_THP_COLLAPSE_ALLOC_FAILED,      //  sl_int          "
+    VMSTAT_DELTA_THP_FAULT_ALLOC,                //  sl_int          "
+    VMSTAT_DELTA_THP_FAULT_FALLBACK,             //  sl_int          "
+    VMSTAT_DELTA_THP_SPLIT,                      //  sl_int          "
+    VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC,            //  sl_int          "
+    VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC_FAILED,     //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_CLEARED,        //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_CULLED,         //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_MLOCKED,        //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_MUNLOCKED,      //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_RESCUED,        //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_SCANNED,        //  sl_int          "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_STRANDED,       //  sl_int          "
+    VMSTAT_DELTA_WORKINGSET_ACTIVATE,            //  sl_int          "
+    VMSTAT_DELTA_WORKINGSET_NODERECLAIM,         //  sl_int          "
+    VMSTAT_DELTA_WORKINGSET_REFAULT,             //  sl_int          "
+    VMSTAT_DELTA_ZONE_RECLAIM_FAILED             //  sl_int          "
 };