]> granicus.if.org Git - procps-ng/commitdiff
top: add support exploiting new library LXC containers
authorJim Warner <james.warner@comcast.net>
Sat, 13 Jun 2015 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Sun, 14 Jun 2015 05:36:06 +0000 (15:36 +1000)
Reference(s):
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1424253
https://bugs.launchpad.net/ubuntu/+source/procps/+bug/1424253

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.c
top/top.h
top/top_nls.c

index b0e23bac95e444f9547e3eef4306591799b8c56c..a51835bb46444d740734cf9306a289987004939e 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -269,6 +269,7 @@ SCB_NUM1(FV1, maj_delta)
 SCB_NUM1(FV2, min_delta)
 SCB_NUMx(GID, egid)
 SCB_STRS(GRP, egroup)
+SCB_STRS(LXC, lxcname)
 SCB_NUMx(NCE, nice)
 SCB_NUM1(NS1, ns[IPCNS])
 SCB_NUM1(NS2, ns[MNTNS])
@@ -1399,7 +1400,7 @@ static void osel_clear (WIN_t *q) {
 
 
         /*
-         * Determine if there is a matching value or releationship among the
+         * Determine if there are matching values or relationships among the
          * other criteria in this passed window -- it's called from only one
          * place, and likely inlined even without the directive */
 static inline int osel_matched (const WIN_t *q, FLG_t enu, const char *str) {
@@ -1695,6 +1696,7 @@ end_justifies:
 #define L_SUPGRP   PROC_FILLSTATUS | PROC_FILLSUPGRP
 #define L_USED     PROC_FILLSTATUS | PROC_FILLMEM
 #define L_NS       PROC_FILLNS
+#define L_LXC      PROC_FILL_LXC
    // make 'none' non-zero (used to be important to Frames_libflags)
 #define L_NONE     PROC_SPARE_1
    // from either 'stat' or 'status' (preferred), via bits not otherwise used
@@ -1794,7 +1796,8 @@ static FLD_t Fieldstab[] = {
    {    10,     -1,  A_right,  SF(NS3),  L_NS      }, // NETNS
    {    10,     -1,  A_right,  SF(NS4),  L_NS      }, // PIDNS
    {    10,     -1,  A_right,  SF(NS5),  L_NS      }, // USERNS
-   {    10,     -1,  A_right,  SF(NS6),  L_NS      }  // UTSNS
+   {    10,     -1,  A_right,  SF(NS6),  L_NS      }, // UTSNS
+   {     8,     -1,  A_left,   SF(LXC),  L_LXC     }
  #undef SF
  #undef A_left
  #undef A_right
@@ -2331,7 +2334,7 @@ static void zap_fieldstab (void) {
       Fieldstab[EU_UEN].width = Fieldstab[EU_URN].width
          = Fieldstab[EU_USN].width = Fieldstab[EU_GRP].width
          = Rc.fixed_widest ? 8 + Rc.fixed_widest : 8;
-      Fieldstab[EU_TTY].width
+      Fieldstab[EU_TTY].width = Fieldstab[EU_LXC].width
          = Rc.fixed_widest ? 8 + Rc.fixed_widest : 8;
       Fieldstab[EU_WCH].width
          = Rc.fixed_widest ? 10 + Rc.fixed_widest : 10;
@@ -5396,6 +5399,9 @@ static const char *task_show (const WIN_t *q, const proc_t *p) {
          case EU_GRP:
             cp = make_str(p->egroup, W, Js, EU_GRP);
             break;
+         case EU_LXC:
+            cp = make_str(p->lxcname, W, Js, EU_LXC);
+            break;
          case EU_MEM:
             cp = scale_pcnt((float)pages2K(p->resident) * 100 / kb_main_total, W, Jn);
             break;
index 6b13e54bbaeeae3fb1242ab62857589743e2b75f..28a1a240720441c8c96c4f01d2c424c5138f9d4c 100644 (file)
--- a/top/top.h
+++ b/top/top.h
@@ -205,6 +205,7 @@ enum pflag {
    EU_FV1, EU_FV2,
    EU_USE,
    EU_NS1, EU_NS2, EU_NS3, EU_NS4, EU_NS5, EU_NS6,
+   EU_LXC,
 #ifdef USE_X_COLHDR
    // not really pflags, used with tbl indexing
    EU_MAXPFLGS
index 5c73e4c29ad6e8e562f7fdde191466f092f13b9b..1928b17239ef9a0bcd17166d48f518bee64d20fc 100644 (file)
@@ -277,6 +277,9 @@ static void build_two_nlstabs (void) {
 /* Translation Hint: maximum 'nsUTS' = 7 */
    Head_nlstab[EU_NS6] = _("nsUTS");
    Desc_nlstab[EU_NS6] = _("UTS namespace Inode");
+/* Translation Hint: maximum 'LXC' = 7 */
+   Head_nlstab[EU_LXC] = _("LXC");
+   Desc_nlstab[EU_LXC] = _("LXC container name");
 }