bus: Notify systemd when we are ready

Signed-off-by: Simon McVittie <smcv@collabora.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=104641
Reviewed-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
Simon McVittie 2018-01-15 15:15:52 +00:00
parent be46707673
commit 18a0a8892b
6 changed files with 24 additions and 0 deletions

View File

@ -4,6 +4,8 @@ Documentation=man:dbus-daemon(1)
Requires=dbus.socket
[Service]
Type=notify
NotifyAccess=main
ExecStart=@EXPANDED_BINDIR@/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
ExecReload=@EXPANDED_BINDIR@/dbus-send --print-reply --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
OOMScoreAdjust=-900

View File

@ -716,6 +716,7 @@ main (int argc, char **argv)
#endif /* DBUS_UNIX */
_dbus_verbose ("We are on D-Bus...\n");
_dbus_daemon_report_ready ();
_dbus_loop_run (bus_context_get_loop (context));
bus_context_shutdown (context);

View File

@ -4,5 +4,7 @@ Documentation=man:dbus-daemon(1)
Requires=dbus.socket
[Service]
Type=notify
NotifyAccess=main
ExecStart=@EXPANDED_BINDIR@/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
ExecReload=@EXPANDED_BINDIR@/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig

View File

@ -1519,3 +1519,15 @@ _dbus_get_session_config_file (DBusString *str)
return _dbus_string_append (str, DBUS_SESSION_CONFIG_FILE);
}
/**
* Report to a service manager that the daemon calling this function is
* ready for use. This is currently only implemented for systemd.
*/
void
_dbus_daemon_report_ready (void)
{
#ifdef HAVE_SYSTEMD
sd_notify (0, "READY=1");
#endif
}

View File

@ -1654,3 +1654,8 @@ _dbus_get_session_config_file (DBusString *str)
return _dbus_get_config_file_name(str, "session.conf");
}
void
_dbus_daemon_report_ready (void)
{
}

View File

@ -687,6 +687,8 @@ dbus_bool_t _dbus_rlimit_restore_fd_limit (DBusRLimit *saved,
DBusError *error);
void _dbus_rlimit_free (DBusRLimit *lim);
void _dbus_daemon_report_ready (void);
/** @} */
DBUS_END_DECLS