library: bring namespaces up to date with linux kernel
authorJim Warner <james.warner@comcast.net>
Thu, 5 May 2022 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@dropbear.xyz>
Mon, 9 May 2022 08:44:21 +0000 (18:44 +1000)
Signed-off-by: Jim Warner <james.warner@comcast.net>
proc/misc.h
proc/namespace.c
proc/pids.c
proc/pids.h
proc/readproc.h

index e677214e31b26d1e6bc96233e317349db24a69d5..078aba55ca1bcf842f50c0d0041cef56a7a6035e 100644 (file)
@@ -54,20 +54,22 @@ int procps_linux_version(void);
 // //////////////////////////////////////////////////////////////////
 // Runtime Particulars //////////////////////////////////////////////
 
-int procps_loadavg (double *av1, double *av5, double *av15);
-int procps_uptime(double *uptime_secs, double *idle_secs);
-char *procps_uptime_sprint(void);
-char *procps_uptime_sprint_short(void);
+int   procps_loadavg (double *av1, double *av5, double *av15);
+int   procps_uptime (double *uptime_secs, double *idle_secs);
+char *procps_uptime_sprint (void);
+char *procps_uptime_sprint_short (void);
 
 
 // //////////////////////////////////////////////////////////////////
 // Namespace Particulars ////////////////////////////////////////////
 
 enum namespace_type {
+    PROCPS_NS_CGROUP,
     PROCPS_NS_IPC,
     PROCPS_NS_MNT,
     PROCPS_NS_NET,
     PROCPS_NS_PID,
+    PROCPS_NS_TIME,
     PROCPS_NS_USER,
     PROCPS_NS_UTS,
     PROCPS_NS_COUNT  // total namespaces (fencepost)
index 4ea7c40409f50fb59dc50cc454df3801bb15bba9..61fe4d50c706e633a940c18769308ab56241b5eb 100644 (file)
 #define NSPATHLEN 64
 
 static const char *ns_names[] = {
-    [PROCPS_NS_IPC] = "ipc",
-    [PROCPS_NS_MNT] = "mnt",
-    [PROCPS_NS_NET] = "net",
-    [PROCPS_NS_PID] = "pid",
-    [PROCPS_NS_USER] = "user",
-    [PROCPS_NS_UTS] = "uts",
+    [PROCPS_NS_CGROUP] = "cgroup",
+    [PROCPS_NS_IPC]    = "ipc",
+    [PROCPS_NS_MNT]    = "mnt",
+    [PROCPS_NS_NET]    = "net",
+    [PROCPS_NS_PID]    = "pid",
+    [PROCPS_NS_TIME]   = "time",
+    [PROCPS_NS_USER]   = "user",
+    [PROCPS_NS_UTS]    = "uts"
 };
 
 
index e390fee020db0b70c8b9dadbe233bf3c3d9e1199..3f9b9457e6763946eefe9af4421a752c59d3995f 100644 (file)
@@ -217,12 +217,14 @@ CVT_set(MEM_VIRT,         ul_int,  size)
 REG_set(MEM_VIRT_PGS,     ul_int,  size)
 REG_set(NICE,             s_int,   nice)
 REG_set(NLWP,             s_int,   nlwp)
-REG_set(NS_IPC,           ul_int,  ns.ns[0])
-REG_set(NS_MNT,           ul_int,  ns.ns[1])
-REG_set(NS_NET,           ul_int,  ns.ns[2])
-REG_set(NS_PID,           ul_int,  ns.ns[3])
-REG_set(NS_USER,          ul_int,  ns.ns[4])
-REG_set(NS_UTS,           ul_int,  ns.ns[5])
+REG_set(NS_CGROUP,        ul_int,  ns.ns[0])
+REG_set(NS_IPC,           ul_int,  ns.ns[1])
+REG_set(NS_MNT,           ul_int,  ns.ns[2])
+REG_set(NS_NET,           ul_int,  ns.ns[3])
+REG_set(NS_PID,           ul_int,  ns.ns[4])
+REG_set(NS_TIME,          ul_int,  ns.ns[5])
+REG_set(NS_USER,          ul_int,  ns.ns[6])
+REG_set(NS_UTS,           ul_int,  ns.ns[7])
 REG_set(OOM_ADJ,          s_int,   oom_adj)
 REG_set(OOM_SCORE,        s_int,   oom_score)
 REG_set(PRIORITY,         s_int,   priority)
@@ -506,10 +508,12 @@ static struct {
     { RS(MEM_VIRT_PGS),      f_statm,    NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NICE),              f_stat,     NULL,      QS(s_int),     0,        TS(s_int)   },
     { RS(NLWP),              f_either,   NULL,      QS(s_int),     0,        TS(s_int)   },
+    { RS(NS_CGROUP),         f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_IPC),            f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_MNT),            f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_NET),            f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_PID),            f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
+    { RS(NS_TIME),           f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_USER),           f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(NS_UTS),            f_ns,       NULL,      QS(ul_int),    0,        TS(ul_int)  },
     { RS(OOM_ADJ),           f_oom,      NULL,      QS(s_int),     0,        TS(s_int)   },
index 8628b590d479d5f33d8696e040a5dc2dd60bcded..13b57bde1005e50534bf036e50bda3aae4dd15be 100644 (file)
@@ -100,10 +100,12 @@ enum pids_item {
     PIDS_MEM_VIRT_PGS,      //   ul_int        statm: size
     PIDS_NICE,              //    s_int        stat: nice
     PIDS_NLWP,              //    s_int        stat: num_threads or status: Threads
-    PIDS_NS_IPC,            //   ul_int        ns/
+    PIDS_NS_CGROUP,         //   ul_int        ns/
+    PIDS_NS_IPC,            //   ul_int         "
     PIDS_NS_MNT,            //   ul_int         "
     PIDS_NS_NET,            //   ul_int         "
     PIDS_NS_PID,            //   ul_int         "
+    PIDS_NS_TIME,           //   ul_int         "
     PIDS_NS_USER,           //   ul_int         "
     PIDS_NS_UTS,            //   ul_int         "
     PIDS_OOM_ADJ,           //    s_int        oom_score_adj
index 87bb53c79cb252b72ea8be1459fef6d81a67cadd..08692dbff89bc3c72988d8e0c5940fcfd64341f9 100644 (file)
@@ -165,7 +165,7 @@ typedef struct proc_t {
     int
         oom_score,      // oom_score       (badness for OOM killer)
         oom_adj;        // oom_adj         (adjustment to OOM score)
-    struct procps_ns ns; // (ns subdir)     inode number of namespaces
+    struct procps_ns ns; // (ns subdir)    inode number of namespaces
     char
         *sd_mach,       // n/a             systemd vm/container name
         *sd_ouid,       // n/a             systemd session owner uid