xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 7 06:19:02 UTC 2019


 man/Xserver.man |    3 ++-
 os/connection.c |    9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

New commits:
commit bb46e785405891775a30636a647e40a7dc4d1ca7
Author: Topi Miettinen <toiwoton at gmail.com>
Date:   Wed May 1 18:07:03 2019 +0300

    os: add support for systemd notification
    
    It can take some time for Xorg to start. If Xorg runs as a systemd
    service and other services are based on it, they have no way to
    determine when Xorg is really ready to accept requests. Let's use
    sd_notify() provided by libsystemd to signal systemd for readiness.
    If Xorg has not been started as a systemd service, this won't do
    anything.
    
    Signed-off-by: Topi Miettinen <toiwoton at gmail.com>

diff --git a/man/Xserver.man b/man/Xserver.man
index 2b2114ac6..192ae4eb4 100644
--- a/man/Xserver.man
+++ b/man/Xserver.man
@@ -54,7 +54,8 @@ The X server may also be started directly by the user, though this
 method is usually reserved for testing and is not recommended for
 normal operation.  On some platforms, the user must have special
 permission to start the X server, often because access to certain
-devices (e.g. \fI/dev/mouse\fP) is restricted.
+devices (e.g. \fI/dev/mouse\fP) is restricted.  Where applicable, the
+X server notifies systemd when it is ready to process requests.
 .PP
 When the X server starts up, it typically takes over the display.  If
 you are running on a workstation whose console is the display, you may
diff --git a/os/connection.c b/os/connection.c
index fd4f9c0ed..5a05d7a1d 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -116,6 +116,10 @@ SOFTWARE.
 #define zoneid_t int
 #endif
 
+#ifdef HAVE_SYSTEMD_DAEMON
+#include <systemd/sd-daemon.h>
+#endif
+
 #include "probes.h"
 
 struct ospoll   *server_poll;
@@ -207,6 +211,11 @@ NotifyParentProcess(void)
     }
     if (RunFromSigStopParent)
         raise(SIGSTOP);
+#ifdef HAVE_SYSTEMD_DAEMON
+    /* If we have been started as a systemd service, tell systemd that
+       we are ready. Otherwise sd_notify() won't do anything. */
+    sd_notify(0, "READY=1");
+#endif
 #endif
 }
 


More information about the xorg-commit mailing list