]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsclocks: add COL_TYPE
authorThomas Weißschuh <thomas@t-8ch.de>
Tue, 11 Jul 2023 11:16:00 +0000 (13:16 +0200)
committerThomas Weißschuh <thomas@t-8ch.de>
Wed, 12 Jul 2023 14:50:52 +0000 (16:50 +0200)
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
misc-utils/lsclocks.1.adoc
misc-utils/lsclocks.c
tests/expected/misc/lsclocks-basic
tests/ts/misc/lsclocks

index 4024c93e4b9178f11de8e81f276778ff3ad5352b..af3e55d8510d95c6d299083d4898de2c8b083912 100644 (file)
@@ -48,6 +48,9 @@ include::man-common/help-version.adoc[]
 
 Each column has a type. Types are surround by < and >.
 
+TYPE <``string``>::
+Clock type.
+
 ID <``number``>::
 Numeric clock ID.
 
index dd6fedda71d0a040496992458573f4cdfdd0d765..ee48dfefbf4c6874b0bc0f5a5fe5059d0699af5d 100644 (file)
 #define CLOCK_TAI                      11
 #endif
 
+enum CLOCK_TYPE {
+       CT_SYS,
+};
+
+static const char *clock_type_name(enum CLOCK_TYPE type)
+{
+       switch (type) {
+       case CT_SYS:
+               return "sys";
+       }
+       errx(EXIT_FAILURE, _("Unknown clock type %d"), type);
+}
+
 struct clockinfo {
+       enum CLOCK_TYPE type;
        clockid_t id;
        const char * const id_name;
        const char * const name;
@@ -82,21 +96,22 @@ struct clockinfo {
 };
 
 static const struct clockinfo clocks[] = {
-       { CLOCK_REALTIME,         "CLOCK_REALTIME",         "realtime"         },
-       { CLOCK_MONOTONIC,        "CLOCK_MONOTONIC",        "monotonic",
-         .ns_offset_name = "monotonic"                                        },
-       { CLOCK_MONOTONIC_RAW,    "CLOCK_MONOTONIC_RAW",    "monotonic-raw"    },
-       { CLOCK_REALTIME_COARSE,  "CLOCK_REALTIME_COARSE",  "realtime-coarse"  },
-       { CLOCK_MONOTONIC_COARSE, "CLOCK_MONOTONIC_COARSE", "monotonic-coarse" },
-       { CLOCK_BOOTTIME,         "CLOCK_BOOTTIME",         "boottime",
-         .ns_offset_name = "boottime"                                         },
-       { CLOCK_REALTIME_ALARM,   "CLOCK_REALTIME_ALARM",   "realtime-alarm"   },
-       { CLOCK_BOOTTIME_ALARM,   "CLOCK_BOOTTIME_ALARM",   "boottime-alarm"   },
-       { CLOCK_TAI,              "CLOCK_TAI",              "tai"              },
+       { CT_SYS, CLOCK_REALTIME,         "CLOCK_REALTIME",         "realtime"         },
+       { CT_SYS, CLOCK_MONOTONIC,        "CLOCK_MONOTONIC",        "monotonic",
+         .ns_offset_name = "monotonic"                                                },
+       { CT_SYS, CLOCK_MONOTONIC_RAW,    "CLOCK_MONOTONIC_RAW",    "monotonic-raw"    },
+       { CT_SYS, CLOCK_REALTIME_COARSE,  "CLOCK_REALTIME_COARSE",  "realtime-coarse"  },
+       { CT_SYS, CLOCK_MONOTONIC_COARSE, "CLOCK_MONOTONIC_COARSE", "monotonic-coarse" },
+       { CT_SYS, CLOCK_BOOTTIME,         "CLOCK_BOOTTIME",         "boottime",
+         .ns_offset_name = "boottime"                                                 },
+       { CT_SYS, CLOCK_REALTIME_ALARM,   "CLOCK_REALTIME_ALARM",   "realtime-alarm"   },
+       { CT_SYS, CLOCK_BOOTTIME_ALARM,   "CLOCK_BOOTTIME_ALARM",   "boottime-alarm"   },
+       { CT_SYS, CLOCK_TAI,              "CLOCK_TAI",              "tai"              },
 };
 
 /* column IDs */
 enum {
+       COL_TYPE,
        COL_ID,
        COL_CLOCK,
        COL_NAME,
@@ -119,6 +134,7 @@ struct colinfo {
 
 /* columns descriptions */
 static const struct colinfo infos[] = {
+       [COL_TYPE]       = { "TYPE",       1, 0,              SCOLS_JSON_STRING, N_("type") },
        [COL_ID]         = { "ID",         1, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER, N_("numeric id") },
        [COL_CLOCK]      = { "CLOCK",      1, 0,              SCOLS_JSON_STRING, N_("symbolic name") },
        [COL_NAME]       = { "NAME",       1, 0,              SCOLS_JSON_STRING, N_("readable name") },
@@ -333,6 +349,7 @@ int main(int argc, char **argv)
        if (!ncolumns) {
                columns[ncolumns++] = COL_ID;
                columns[ncolumns++] = COL_NAME;
+               columns[ncolumns++] = COL_TYPE;
                columns[ncolumns++] = COL_TIME;
                columns[ncolumns++] = COL_RESOL;
                columns[ncolumns++] = COL_ISO_TIME;
@@ -377,6 +394,9 @@ int main(int argc, char **argv)
 
                for (j = 0; j < ncolumns; j++) {
                        switch (columns[j]) {
+                               case COL_TYPE:
+                                       scols_line_set_data(ln, j, clock_type_name(clockinfo->type));
+                                       break;
                                case COL_ID:
                                        scols_line_asprintf(ln, j, "%ju", (uintmax_t) clockinfo->id);
                                        break;
index b3b25f4a6349e0c4dc3dea87050c1dc01ac947fc..1b375b83c129a2b780b93f9e00964de0bd6aa753 100644 (file)
@@ -1,10 +1,10 @@
-ID CLOCK                  NAME
- 0 CLOCK_REALTIME         realtime
- 1 CLOCK_MONOTONIC        monotonic
- 4 CLOCK_MONOTONIC_RAW    monotonic-raw
- 5 CLOCK_REALTIME_COARSE  realtime-coarse
- 6 CLOCK_MONOTONIC_COARSE monotonic-coarse
- 7 CLOCK_BOOTTIME         boottime
- 8 CLOCK_REALTIME_ALARM   realtime-alarm
- 9 CLOCK_BOOTTIME_ALARM   boottime-alarm
-11 CLOCK_TAI              tai
+TYPE ID CLOCK                  NAME
+sys   0 CLOCK_REALTIME         realtime
+sys   1 CLOCK_MONOTONIC        monotonic
+sys   4 CLOCK_MONOTONIC_RAW    monotonic-raw
+sys   5 CLOCK_REALTIME_COARSE  realtime-coarse
+sys   6 CLOCK_MONOTONIC_COARSE monotonic-coarse
+sys   7 CLOCK_BOOTTIME         boottime
+sys   8 CLOCK_REALTIME_ALARM   realtime-alarm
+sys   9 CLOCK_BOOTTIME_ALARM   boottime-alarm
+sys  11 CLOCK_TAI              tai
index 55ee4df40e14d60a3ded1de3b9b2867998d7ab9d..4cf414bdd0531125f255067feaaadc1f0fb3976f 100755 (executable)
@@ -29,7 +29,7 @@ mask_timestamps() {
 
 ts_init_subtest basic
 
-"$TS_CMD_LSCLOCKS" -o ID,CLOCK,NAME > "$TS_OUTPUT" 2>> "$TS_ERRLOG"
+"$TS_CMD_LSCLOCKS" -o TYPE,ID,CLOCK,NAME > "$TS_OUTPUT" 2>> "$TS_ERRLOG"
 
 ts_finalize_subtest