library: add item origin (as comments) to header files

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 e3270d463d
. 08/11/2016, extensibility while preserving ABI example
https://www.freelists.org/post/procps/new-meminfo-fields
commit 09e1886c9e

_________________________ 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 2598e9f2ce

___________________ 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>
This commit is contained in:
Jim Warner 2018-12-20 00:00:00 -06:00 committed by Craig Small
parent d9f88246f6
commit 96d59cbf46
6 changed files with 575 additions and 567 deletions

View File

@ -30,35 +30,36 @@ extern "C" {
enum diskstats_item {
DISKSTATS_noop, // ( never altered )
DISKSTATS_extra, // ( reset to zero )
// returns origin, see proc(5)
// ------- -------------------
DISKSTATS_NAME, // str /proc/diskstats
DISKSTATS_TYPE, // s_int "
DISKSTATS_MAJOR, // s_int "
DISKSTATS_MINOR, // s_int "
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_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_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
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 {

View 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
// 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
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_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
MEMINFO_MEMHI_TOTAL, // ul_int
MEMINFO_MEMHI_USED, // ul_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_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_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
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 "
};

View 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 {

View File

@ -24,49 +24,50 @@
#define PROCPS_SLABINFO_H
#ifdef __cplusplus
extern "C" {
extern "C "{
#endif
enum slabinfo_item {
SLABINFO_noop, // ( never altered )
SLABINFO_extra, // ( reset to zero )
// 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_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 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 "
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
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 {

View File

@ -26,56 +26,57 @@ extern "C" {
enum stat_item {
STAT_noop, // ( never altered )
STAT_extra, // ( reset to zero )
// 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_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_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_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_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_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
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 {

View 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 "
};