From 18fa6b2705aaef42041942f47f013e426640b6a4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 27 Jun 2011 13:47:03 +0200 Subject: dbus: send our finished signal when we are finished booting --- src/dbus.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/dbus.c') diff --git a/src/dbus.c b/src/dbus.c index 93a19a45cd..764c65cc0d 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -1274,3 +1274,42 @@ int bus_fdset_add_all(Manager *m, FDSet *fds) { return 0; } + +void bus_broadcast_finished( + Manager *m, + usec_t kernel_usec, + usec_t initrd_usec, + usec_t userspace_usec, + usec_t total_usec) { + + DBusMessage *message; + + assert(m); + + message = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartupFinished"); + if (!message) { + log_error("Out of memory."); + return; + } + + assert_cc(sizeof(usec_t) == sizeof(uint64_t)); + if (!dbus_message_append_args(message, + DBUS_TYPE_UINT64, &kernel_usec, + DBUS_TYPE_UINT64, &initrd_usec, + DBUS_TYPE_UINT64, &userspace_usec, + DBUS_TYPE_UINT64, &total_usec, + DBUS_TYPE_INVALID)) { + log_error("Out of memory."); + goto finish; + } + + + if (bus_broadcast(m, message) < 0) { + log_error("Out of memory."); + goto finish; + } + +finish: + if (m) + dbus_message_unref(message); +} -- cgit v1.2.3-54-g00ecf