From: Mike Yuan Date: Thu, 25 May 2023 10:23:17 +0000 (+0800) Subject: systemctl: list-units: use TABLE_TIMESTAMP_RELATIVE_MONOTONIC X-Git-Tag: v254-rc1~361^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc550be872be34f810bfa083395ae64df2aac7fa;p=thirdparty%2Fsystemd.git systemctl: list-units: use TABLE_TIMESTAMP_RELATIVE_MONOTONIC --- diff --git a/src/systemctl/systemctl-list-units.c b/src/systemctl/systemctl-list-units.c index 9be9510a2c4..77ff836bb09 100644 --- a/src/systemctl/systemctl-list-units.c +++ b/src/systemctl/systemctl-list-units.c @@ -536,9 +536,10 @@ static int get_next_elapse( static int get_last_trigger( sd_bus *bus, const char *path, - usec_t *last) { + dual_timestamp *last) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + dual_timestamp t; int r; assert(bus); @@ -553,10 +554,23 @@ static int get_last_trigger( "LastTriggerUSec", &error, 't', - last); + &t.realtime); + if (r < 0) + return log_error_errno(r, "Failed to get last trigger time: %s", bus_error_message(&error, r)); + + r = sd_bus_get_property_trivial( + bus, + "org.freedesktop.systemd1", + path, + "org.freedesktop.systemd1.Timer", + "LastTriggerUSecMonotonic", + &error, + 't', + &t.monotonic); if (r < 0) return log_error_errno(r, "Failed to get last trigger time: %s", bus_error_message(&error, r)); + *last = t; return 0; } @@ -564,7 +578,7 @@ typedef struct TimerInfo { const char* machine; const char* id; usec_t next_elapse; - usec_t last_trigger; + dual_timestamp last_trigger; char **triggered; } TimerInfo; @@ -623,8 +637,8 @@ static int output_timers_list(const TimerInfo *timers, size_t n_timers) { r = table_add_many(table, TABLE_TIMESTAMP, t->next_elapse, TABLE_TIMESTAMP_LEFT, t->next_elapse, - TABLE_TIMESTAMP, t->last_trigger, - TABLE_TIMESTAMP_RELATIVE, t->last_trigger, + TABLE_TIMESTAMP, t->last_trigger.realtime, + TABLE_TIMESTAMP_RELATIVE_MONOTONIC, t->last_trigger.monotonic, TABLE_STRING, unit); if (r < 0) return table_log_add_error(r); @@ -677,8 +691,8 @@ static int add_timer_info( size_t *n_timers) { _cleanup_strv_free_ char **triggered = NULL; - dual_timestamp next = DUAL_TIMESTAMP_NULL; - usec_t m, last = 0; + dual_timestamp next, last; + usec_t m; int r; assert(bus);