]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: add manager_dump() call, and make it output timestamp data
authorLennart Poettering <lennart@poettering.net>
Mon, 20 Nov 2017 20:11:32 +0000 (21:11 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 21 Nov 2017 09:22:28 +0000 (10:22 +0100)
It's a wrapper around manager_dump_units() and manager_dump_jobs(), and
outputs some additional timestamp data.

Also, port two users of this over.

src/core/dbus-manager.c
src/core/manager.c
src/core/manager.h

index b98351e84efcf57985f7330aeda60b6d4bcc8e13..3261e1e86eb9f6945bfd8c44a993718cbc0f304b 100644 (file)
@@ -1307,8 +1307,7 @@ static int method_dump(sd_bus_message *message, void *userdata, sd_bus_error *er
         if (!f)
                 return -ENOMEM;
 
-        manager_dump_units(m, f, NULL);
-        manager_dump_jobs(m, f, NULL);
+        manager_dump(m, f, NULL);
 
         r = fflush_and_check(f);
         if (r < 0)
index 059482ff1d57b76cb8154d8ca61609bbf8a0b578..b99bf22e23873e84016900e7704a0db41fed6945 100644 (file)
@@ -1711,6 +1711,26 @@ void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
                         unit_dump(u, f, prefix);
 }
 
+void manager_dump(Manager *m, FILE *f, const char *prefix) {
+        ManagerTimestamp q;
+
+        assert(m);
+        assert(f);
+
+        for (q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
+                char buf[FORMAT_TIMESTAMP_MAX];
+
+                if (dual_timestamp_is_set(m->timestamps + q))
+                        fprintf(f, "%sTimestamp %s: %s\n",
+                                strempty(prefix),
+                                manager_timestamp_to_string(q),
+                                format_timestamp(buf, sizeof(buf), m->timestamps[q].realtime));
+        }
+
+        manager_dump_units(m, f, prefix);
+        manager_dump_jobs(m, f, prefix);
+}
+
 void manager_clear_jobs(Manager *m) {
         Job *j;
 
@@ -2168,8 +2188,7 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
                                 break;
                         }
 
-                        manager_dump_units(m, f, "\t");
-                        manager_dump_jobs(m, f, "\t");
+                        manager_dump(m, f, NULL);
 
                         r = fflush_and_check(f);
                         if (r < 0) {
index 1812eb37ea671f03db7851683b7d4ec5b023d612..eec063e465670060035965bf9a1f975d7efb15ef 100644 (file)
@@ -374,6 +374,7 @@ int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error
 
 void manager_dump_units(Manager *s, FILE *f, const char *prefix);
 void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
+void manager_dump(Manager *s, FILE *f, const char *prefix);
 
 void manager_clear_jobs(Manager *m);