]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsmem: improve JSON output
authorKarel Zak <kzak@redhat.com>
Thu, 5 Apr 2018 09:54:57 +0000 (11:54 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 5 Apr 2018 10:14:46 +0000 (12:14 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lsmem.c
tests/expected/lsmem/lsmem-s390-zvm-6g
tests/expected/lsmem/lsmem-x86_64-16g

index 3e226864ad93560c4b0cc882989610b673b31b8f..83a393046a37f6c2f9b5de744b0272a1d9b29cd0 100644 (file)
@@ -665,8 +665,28 @@ int main(int argc, char **argv)
 
        for (i = 0; i < ncolumns; i++) {
                struct coldesc *ci = get_column_desc(i);
-               if (!scols_table_new_column(lsmem->table, ci->name, ci->whint, ci->flags))
+               struct libscols_column *cl;
+
+               cl = scols_table_new_column(lsmem->table, ci->name, ci->whint, ci->flags);
+               if (!cl)
                        err(EXIT_FAILURE, _("Failed to initialize output column"));
+
+               if (lsmem->json) {
+                       int id = get_column_id(i);
+
+                       switch (id) {
+                       case COL_SIZE:
+                               if (!lsmem->bytes)
+                                       break;
+                               /* fallthrough */
+                       case COL_NODE:
+                               scols_column_set_json_type(cl, SCOLS_JSON_NUMBER);
+                               break;
+                       case COL_REMOVABLE:
+                               scols_column_set_json_type(cl, SCOLS_JSON_BOOLEAN);
+                               break;
+                       }
+               }
        }
 
        if (splitarg) {
index ab03836bc0e4acc0f73906b05fef3b371a71a0c5..6b990b319dd4402675e9fa8c68d9908a727758a9 100644 (file)
@@ -8,11 +8,11 @@ RANGE                                  SIZE   STATE REMOVABLE BLOCK
 0x0000000080000000-0x000000009fffffff  512M  online       yes   8-9
 0x00000000a0000000-0x00000000bfffffff  512M  online        no 10-11
 0x00000000c0000000-0x00000000dfffffff  512M  online       yes 12-13
-0x00000000e0000000-0x00000000efffffff  256M offline         -    14
+0x00000000e0000000-0x00000000efffffff  256M offline              14
 0x00000000f0000000-0x00000000ffffffff  256M  online       yes    15
 0x0000000100000000-0x000000011fffffff  512M  online        no 16-17
 0x0000000120000000-0x000000013fffffff  512M  online       yes 18-19
-0x0000000140000000-0x000000017fffffff    1G offline         - 20-23
+0x0000000140000000-0x000000017fffffff    1G offline           20-23
 
 Memory block size:       256M
 Total online memory:     4.8G
@@ -59,16 +59,16 @@ RANGE                                  SIZE   STATE REMOVABLE BLOCK NODE
 0x00000000b0000000-0x00000000bfffffff  256M  online        no    11    0
 0x00000000c0000000-0x00000000cfffffff  256M  online       yes    12    0
 0x00000000d0000000-0x00000000dfffffff  256M  online       yes    13    0
-0x00000000e0000000-0x00000000efffffff  256M offline         -    14    0
+0x00000000e0000000-0x00000000efffffff  256M offline              14    0
 0x00000000f0000000-0x00000000ffffffff  256M  online       yes    15    0
 0x0000000100000000-0x000000010fffffff  256M  online        no    16    0
 0x0000000110000000-0x000000011fffffff  256M  online        no    17    0
 0x0000000120000000-0x000000012fffffff  256M  online       yes    18    0
 0x0000000130000000-0x000000013fffffff  256M  online       yes    19    0
-0x0000000140000000-0x000000014fffffff  256M offline         -    20    0
-0x0000000150000000-0x000000015fffffff  256M offline         -    21    0
-0x0000000160000000-0x000000016fffffff  256M offline         -    22    0
-0x0000000170000000-0x000000017fffffff  256M offline         -    23    0
+0x0000000140000000-0x000000014fffffff  256M offline              20    0
+0x0000000150000000-0x000000015fffffff  256M offline              21    0
+0x0000000160000000-0x000000016fffffff  256M offline              22    0
+0x0000000170000000-0x000000017fffffff  256M offline              23    0
 
 Memory block size:       256M
 Total online memory:     4.8G
@@ -83,27 +83,27 @@ RANGE SIZE STATE REMOVABLE BLOCK NODE
 0x0000000080000000-0x000000009fffffff 512M online yes 8-9 0
 0x00000000a0000000-0x00000000bfffffff 512M online no 10-11 0
 0x00000000c0000000-0x00000000dfffffff 512M online yes 12-13 0
-0x00000000e0000000-0x00000000efffffff 256M offline - 14 0
+0x00000000e0000000-0x00000000efffffff 256M offline  14 0
 0x00000000f0000000-0x00000000ffffffff 256M online yes 15 0
 0x0000000100000000-0x000000011fffffff 512M online no 16-17 0
 0x0000000120000000-0x000000013fffffff 512M online yes 18-19 0
-0x0000000140000000-0x000000017fffffff 1G offline - 20-23 0
+0x0000000140000000-0x000000017fffffff 1G offline  20-23 0
 
 ---
 
 $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE --split RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE
 {
    "memory": [
-      {"range":"0x0000000000000000-0x000000006fffffff", "size":"1.8G", "state":"online", "removable":"yes", "block":"0-6", "node":"0"},
-      {"range":"0x0000000070000000-0x000000007fffffff", "size":"256M", "state":"online", "removable":"no", "block":"7", "node":"0"},
-      {"range":"0x0000000080000000-0x000000009fffffff", "size":"512M", "state":"online", "removable":"yes", "block":"8-9", "node":"0"},
-      {"range":"0x00000000a0000000-0x00000000bfffffff", "size":"512M", "state":"online", "removable":"no", "block":"10-11", "node":"0"},
-      {"range":"0x00000000c0000000-0x00000000dfffffff", "size":"512M", "state":"online", "removable":"yes", "block":"12-13", "node":"0"},
-      {"range":"0x00000000e0000000-0x00000000efffffff", "size":"256M", "state":"offline", "removable":"-", "block":"14", "node":"0"},
-      {"range":"0x00000000f0000000-0x00000000ffffffff", "size":"256M", "state":"online", "removable":"yes", "block":"15", "node":"0"},
-      {"range":"0x0000000100000000-0x000000011fffffff", "size":"512M", "state":"online", "removable":"no", "block":"16-17", "node":"0"},
-      {"range":"0x0000000120000000-0x000000013fffffff", "size":"512M", "state":"online", "removable":"yes", "block":"18-19", "node":"0"},
-      {"range":"0x0000000140000000-0x000000017fffffff", "size":"1G", "state":"offline", "removable":"-", "block":"20-23", "node":"0"}
+      {"range":"0x0000000000000000-0x000000006fffffff", "size":"1.8G", "state":"online", "removable":true, "block":"0-6", "node":0},
+      {"range":"0x0000000070000000-0x000000007fffffff", "size":"256M", "state":"online", "removable":false, "block":"7", "node":0},
+      {"range":"0x0000000080000000-0x000000009fffffff", "size":"512M", "state":"online", "removable":true, "block":"8-9", "node":0},
+      {"range":"0x00000000a0000000-0x00000000bfffffff", "size":"512M", "state":"online", "removable":false, "block":"10-11", "node":0},
+      {"range":"0x00000000c0000000-0x00000000dfffffff", "size":"512M", "state":"online", "removable":true, "block":"12-13", "node":0},
+      {"range":"0x00000000e0000000-0x00000000efffffff", "size":"256M", "state":"offline", "removable":false, "block":"14", "node":0},
+      {"range":"0x00000000f0000000-0x00000000ffffffff", "size":"256M", "state":"online", "removable":true, "block":"15", "node":0},
+      {"range":"0x0000000100000000-0x000000011fffffff", "size":"512M", "state":"online", "removable":false, "block":"16-17", "node":0},
+      {"range":"0x0000000120000000-0x000000013fffffff", "size":"512M", "state":"online", "removable":true, "block":"18-19", "node":0},
+      {"range":"0x0000000140000000-0x000000017fffffff", "size":"1G", "state":"offline", "removable":false, "block":"20-23", "node":0}
    ]
 }
 
@@ -116,13 +116,13 @@ RANGE                                  SIZE   STATE REMOVABLE BLOCK          ZON
 0x0000000080000000-0x000000009fffffff  512M  online       yes   8-9         Normal
 0x00000000a0000000-0x00000000bfffffff  512M  online        no 10-11         Normal
 0x00000000c0000000-0x00000000dfffffff  512M  online       yes 12-13         Normal
-0x00000000e0000000-0x00000000efffffff  256M offline         -    14         Normal
+0x00000000e0000000-0x00000000efffffff  256M offline              14         Normal
 0x00000000f0000000-0x00000000ffffffff  256M  online       yes    15         Normal
 0x0000000100000000-0x000000010fffffff  256M  online        no    16         Normal
 0x0000000110000000-0x000000011fffffff  256M  online        no    17 Normal/Movable
 0x0000000120000000-0x000000012fffffff  256M  online       yes    18 Movable/Normal
 0x0000000130000000-0x000000013fffffff  256M  online       yes    19        Movable
-0x0000000140000000-0x000000017fffffff    1G offline         - 20-23        Movable
+0x0000000140000000-0x000000017fffffff    1G offline           20-23        Movable
 
 Memory block size:       256M
 Total online memory:     4.8G
@@ -137,11 +137,11 @@ RANGE                                  SIZE   STATE REMOVABLE BLOCK
 0x0000000080000000-0x000000009fffffff  512M  online       yes   8-9
 0x00000000a0000000-0x00000000bfffffff  512M  online        no 10-11
 0x00000000c0000000-0x00000000dfffffff  512M  online       yes 12-13
-0x00000000e0000000-0x00000000efffffff  256M offline         -    14
+0x00000000e0000000-0x00000000efffffff  256M offline              14
 0x00000000f0000000-0x00000000ffffffff  256M  online       yes    15
 0x0000000100000000-0x000000011fffffff  512M  online        no 16-17
 0x0000000120000000-0x000000013fffffff  512M  online       yes 18-19
-0x0000000140000000-0x000000017fffffff    1G offline         - 20-23
+0x0000000140000000-0x000000017fffffff    1G offline           20-23
 
 Memory block size:       256M
 Total online memory:     4.8G
index dd250235fc0fceef85a2871f3419bf8d91e8caf5..0bb04e34a9bc1395053e19ed78e646a667c7f7cb 100644 (file)
@@ -237,36 +237,36 @@ RANGE SIZE STATE REMOVABLE BLOCK NODE
 $ lsmem --json --output RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE --split RANGE,SIZE,STATE,REMOVABLE,BLOCK,NODE
 {
    "memory": [
-      {"range":"0x0000000000000000-0x0000000007ffffff", "size":"128M", "state":"online", "removable":"no", "block":"0", "node":"0"},
-      {"range":"0x0000000008000000-0x0000000037ffffff", "size":"768M", "state":"online", "removable":"yes", "block":"1-6", "node":"0"},
-      {"range":"0x0000000038000000-0x000000003fffffff", "size":"128M", "state":"online", "removable":"no", "block":"7", "node":"0"},
-      {"range":"0x0000000040000000-0x0000000077ffffff", "size":"896M", "state":"online", "removable":"yes", "block":"8-14", "node":"0"},
-      {"range":"0x0000000078000000-0x000000007fffffff", "size":"128M", "state":"online", "removable":"no", "block":"15", "node":"0"},
-      {"range":"0x0000000080000000-0x00000000afffffff", "size":"768M", "state":"online", "removable":"yes", "block":"16-21", "node":"0"},
-      {"range":"0x00000000b0000000-0x00000000bfffffff", "size":"256M", "state":"online", "removable":"no", "block":"22-23", "node":"0"},
-      {"range":"0x0000000100000000-0x00000001a7ffffff", "size":"2.6G", "state":"online", "removable":"no", "block":"32-52", "node":"0"},
-      {"range":"0x00000001a8000000-0x00000001afffffff", "size":"128M", "state":"online", "removable":"yes", "block":"53", "node":"0"},
-      {"range":"0x00000001b0000000-0x00000001bfffffff", "size":"256M", "state":"online", "removable":"no", "block":"54-55", "node":"0"},
-      {"range":"0x00000001c0000000-0x00000001ffffffff", "size":"1G", "state":"online", "removable":"yes", "block":"56-63", "node":"0"},
-      {"range":"0x0000000200000000-0x0000000207ffffff", "size":"128M", "state":"online", "removable":"no", "block":"64", "node":"0"},
-      {"range":"0x0000000208000000-0x000000021fffffff", "size":"384M", "state":"online", "removable":"yes", "block":"65-67", "node":"0"},
-      {"range":"0x0000000220000000-0x0000000237ffffff", "size":"384M", "state":"online", "removable":"no", "block":"68-70", "node":"0"},
-      {"range":"0x0000000238000000-0x0000000277ffffff", "size":"1G", "state":"online", "removable":"yes", "block":"71-78", "node":"0"},
-      {"range":"0x0000000278000000-0x000000028fffffff", "size":"384M", "state":"online", "removable":"no", "block":"79-81", "node":"0"},
-      {"range":"0x0000000290000000-0x0000000297ffffff", "size":"128M", "state":"online", "removable":"yes", "block":"82", "node":"0"},
-      {"range":"0x0000000298000000-0x00000002a7ffffff", "size":"256M", "state":"online", "removable":"no", "block":"83-84", "node":"0"},
-      {"range":"0x00000002a8000000-0x00000002c7ffffff", "size":"512M", "state":"online", "removable":"yes", "block":"85-88", "node":"0"},
-      {"range":"0x00000002c8000000-0x00000002dfffffff", "size":"384M", "state":"online", "removable":"no", "block":"89-91", "node":"0"},
-      {"range":"0x00000002e0000000-0x00000002efffffff", "size":"256M", "state":"online", "removable":"yes", "block":"92-93", "node":"0"},
-      {"range":"0x00000002f0000000-0x000000034fffffff", "size":"1.5G", "state":"online", "removable":"no", "block":"94-105", "node":"0"},
-      {"range":"0x0000000350000000-0x0000000357ffffff", "size":"128M", "state":"online", "removable":"yes", "block":"106", "node":"0"},
-      {"range":"0x0000000358000000-0x000000036fffffff", "size":"384M", "state":"online", "removable":"no", "block":"107-109", "node":"0"},
-      {"range":"0x0000000370000000-0x0000000377ffffff", "size":"128M", "state":"online", "removable":"yes", "block":"110", "node":"0"},
-      {"range":"0x0000000378000000-0x00000003c7ffffff", "size":"1.3G", "state":"online", "removable":"no", "block":"111-120", "node":"0"},
-      {"range":"0x00000003c8000000-0x00000003e7ffffff", "size":"512M", "state":"online", "removable":"yes", "block":"121-124", "node":"0"},
-      {"range":"0x00000003e8000000-0x000000042fffffff", "size":"1.1G", "state":"online", "removable":"no", "block":"125-133", "node":"0"},
-      {"range":"0x0000000430000000-0x0000000437ffffff", "size":"128M", "state":"online", "removable":"yes", "block":"134", "node":"0"},
-      {"range":"0x0000000438000000-0x000000043fffffff", "size":"128M", "state":"online", "removable":"no", "block":"135", "node":"0"}
+      {"range":"0x0000000000000000-0x0000000007ffffff", "size":"128M", "state":"online", "removable":false, "block":"0", "node":0},
+      {"range":"0x0000000008000000-0x0000000037ffffff", "size":"768M", "state":"online", "removable":true, "block":"1-6", "node":0},
+      {"range":"0x0000000038000000-0x000000003fffffff", "size":"128M", "state":"online", "removable":false, "block":"7", "node":0},
+      {"range":"0x0000000040000000-0x0000000077ffffff", "size":"896M", "state":"online", "removable":true, "block":"8-14", "node":0},
+      {"range":"0x0000000078000000-0x000000007fffffff", "size":"128M", "state":"online", "removable":false, "block":"15", "node":0},
+      {"range":"0x0000000080000000-0x00000000afffffff", "size":"768M", "state":"online", "removable":true, "block":"16-21", "node":0},
+      {"range":"0x00000000b0000000-0x00000000bfffffff", "size":"256M", "state":"online", "removable":false, "block":"22-23", "node":0},
+      {"range":"0x0000000100000000-0x00000001a7ffffff", "size":"2.6G", "state":"online", "removable":false, "block":"32-52", "node":0},
+      {"range":"0x00000001a8000000-0x00000001afffffff", "size":"128M", "state":"online", "removable":true, "block":"53", "node":0},
+      {"range":"0x00000001b0000000-0x00000001bfffffff", "size":"256M", "state":"online", "removable":false, "block":"54-55", "node":0},
+      {"range":"0x00000001c0000000-0x00000001ffffffff", "size":"1G", "state":"online", "removable":true, "block":"56-63", "node":0},
+      {"range":"0x0000000200000000-0x0000000207ffffff", "size":"128M", "state":"online", "removable":false, "block":"64", "node":0},
+      {"range":"0x0000000208000000-0x000000021fffffff", "size":"384M", "state":"online", "removable":true, "block":"65-67", "node":0},
+      {"range":"0x0000000220000000-0x0000000237ffffff", "size":"384M", "state":"online", "removable":false, "block":"68-70", "node":0},
+      {"range":"0x0000000238000000-0x0000000277ffffff", "size":"1G", "state":"online", "removable":true, "block":"71-78", "node":0},
+      {"range":"0x0000000278000000-0x000000028fffffff", "size":"384M", "state":"online", "removable":false, "block":"79-81", "node":0},
+      {"range":"0x0000000290000000-0x0000000297ffffff", "size":"128M", "state":"online", "removable":true, "block":"82", "node":0},
+      {"range":"0x0000000298000000-0x00000002a7ffffff", "size":"256M", "state":"online", "removable":false, "block":"83-84", "node":0},
+      {"range":"0x00000002a8000000-0x00000002c7ffffff", "size":"512M", "state":"online", "removable":true, "block":"85-88", "node":0},
+      {"range":"0x00000002c8000000-0x00000002dfffffff", "size":"384M", "state":"online", "removable":false, "block":"89-91", "node":0},
+      {"range":"0x00000002e0000000-0x00000002efffffff", "size":"256M", "state":"online", "removable":true, "block":"92-93", "node":0},
+      {"range":"0x00000002f0000000-0x000000034fffffff", "size":"1.5G", "state":"online", "removable":false, "block":"94-105", "node":0},
+      {"range":"0x0000000350000000-0x0000000357ffffff", "size":"128M", "state":"online", "removable":true, "block":"106", "node":0},
+      {"range":"0x0000000358000000-0x000000036fffffff", "size":"384M", "state":"online", "removable":false, "block":"107-109", "node":0},
+      {"range":"0x0000000370000000-0x0000000377ffffff", "size":"128M", "state":"online", "removable":true, "block":"110", "node":0},
+      {"range":"0x0000000378000000-0x00000003c7ffffff", "size":"1.3G", "state":"online", "removable":false, "block":"111-120", "node":0},
+      {"range":"0x00000003c8000000-0x00000003e7ffffff", "size":"512M", "state":"online", "removable":true, "block":"121-124", "node":0},
+      {"range":"0x00000003e8000000-0x000000042fffffff", "size":"1.1G", "state":"online", "removable":false, "block":"125-133", "node":0},
+      {"range":"0x0000000430000000-0x0000000437ffffff", "size":"128M", "state":"online", "removable":true, "block":"134", "node":0},
+      {"range":"0x0000000438000000-0x000000043fffffff", "size":"128M", "state":"online", "removable":false, "block":"135", "node":0}
    ]
 }