[PATCH 2/3] linux: xf86OpenConsole: open vt before detaching from terminal

Peter Hutterer peter.hutterer at who-t.net
Tue Jan 21 18:23:38 PST 2014


On Tue, Jan 21, 2014 at 09:14:17AM +0100, Hans de Goede wrote:
> Hi,
> 
> On 01/21/2014 06:11 AM, Peter Hutterer wrote:
> >On Thu, Jan 16, 2014 at 11:24:50AM +0100, Hans de Goede wrote:
> >>This is a preparation patch for automatically doing keeptty when the server
> >>gets passed the current vt as vt to use on the cmdline.
> >
> >I found the commit message a bit confusing. The bit you moved merely moves
> >the process group handling code, so it'd be great if you could amend the
> >message for that.
> 
> The setsid call at the end is what is doing the detach from tty, the process
> group "mangling" is merely there because it is required for setsid to work.

sorry, misunderstood it, for some reason I interpreted this as the actual vt
changes, not sure why. mea culpa.

Cheers,
   Peter

> >
> >Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net> for the series
> >though.
> >
> >Cheers,
> >    Peter
> >
> >
> >>---
> >>  hw/xfree86/os-support/linux/lnx_init.c | 43 ++++++++++++++++------------------
> >>  1 file changed, 20 insertions(+), 23 deletions(-)
> >>
> >>diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
> >>index bead72e..5f7d39b 100644
> >>--- a/hw/xfree86/os-support/linux/lnx_init.c
> >>+++ b/hw/xfree86/os-support/linux/lnx_init.c
> >>@@ -126,27 +126,6 @@ xf86OpenConsole(void)
> >>
> >>          xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
> >>
> >>-        if (!KeepTty) {
> >>-            pid_t ppid = getppid();
> >>-            pid_t ppgid;
> >>-
> >>-            ppgid = getpgid(ppid);
> >>-
> >>-            /*
> >>-             * change to parent process group that pgid != pid so
> >>-             * that setsid() doesn't fail and we become process
> >>-             * group leader
> >>-             */
> >>-            if (setpgid(0, ppgid) < 0)
> >>-                xf86Msg(X_WARNING, "xf86OpenConsole: setpgid failed: %s\n",
> >>-                        strerror(errno));
> >>-
> >>-            /* become process group leader */
> >>-            if ((setsid() < 0))
> >>-                xf86Msg(X_WARNING, "xf86OpenConsole: setsid failed: %s\n",
> >>-                        strerror(errno));
> >>-        }
> >>-
> >>          i = 0;
> >>          while (vcs[i] != NULL) {
> >>              snprintf(vtname, sizeof(vtname), vcs[i], xf86Info.vtno);    /* /dev/tty1-64 */
> >>@@ -170,8 +149,26 @@ xf86OpenConsole(void)
> >>          else
> >>              activeVT = vts.v_active;
> >>
> >>-#if 0
> >>          if (!KeepTty) {
> >>+            pid_t ppid = getppid();
> >>+            pid_t ppgid;
> >>+
> >>+            ppgid = getpgid(ppid);
> >>+
> >>+            /*
> >>+             * change to parent process group that pgid != pid so
> >>+             * that setsid() doesn't fail and we become process
> >>+             * group leader
> >>+             */
> >>+            if (setpgid(0, ppgid) < 0)
> >>+                xf86Msg(X_WARNING, "xf86OpenConsole: setpgid failed: %s\n",
> >>+                        strerror(errno));
> >>+
> >>+            /* become process group leader */
> >>+            if ((setsid() < 0))
> >>+                xf86Msg(X_WARNING, "xf86OpenConsole: setsid failed: %s\n",
> >>+                        strerror(errno));
> >>+#if 0
> >>              /*
> >>               * Detach from the controlling tty to avoid char loss
> >>               */
> >>@@ -179,8 +176,8 @@ xf86OpenConsole(void)
> >>                  SYSCALL(ioctl(i, TIOCNOTTY, 0));
> >>                  close(i);
> >>              }
> >>-        }
> >>  #endif
> >>+        }
> >>
> >>          if (!xf86Info.ShareVTs) {
> >>              struct termios nTty;
> >>--
> >>1.8.4.2
> >>
> >>_______________________________________________
> >>xorg-devel at lists.x.org: X.Org development
> >>Archives: http://lists.x.org/archives/xorg-devel
> >>Info: http://lists.x.org/mailman/listinfo/xorg-devel
> >>


More information about the xorg-devel mailing list