]> Zhao Yanbai Git Server - minix.git/commitdiff
TTY: skip /dev/log checks if console is serial
authorDavid van Moolenbroek <david@minix3.org>
Tue, 1 Oct 2013 21:25:01 +0000 (23:25 +0200)
committerLionel Sambuc <lionel@minix3.org>
Sat, 1 Mar 2014 08:04:52 +0000 (09:04 +0100)
It is unclear why /dev/log has its own open/close rules, but those
rules conflict with serial console redirection.  This does not solve
the root of the problem, but it puts back in place more or less the
same workaround that was already in place before the TTY overhaul.

Change-Id: Ib53abbc28a76c1f2b0befc8448aeed0173bc96a5

drivers/tty/tty.c

index e1f55dad0ade3e9b981a1f2e0dae5fd8482f8cf0..5bcc05b7fe15e10cb3b7d2ae4e5547e197c5a1ff 100644 (file)
@@ -780,7 +780,7 @@ static int do_open(devminor_t minor, int access, endpoint_t user_endpt)
   if ((tp = line2tty(minor)) == NULL)
        return ENXIO;
 
-  if (minor == LOG_MINOR) {
+  if (minor == LOG_MINOR && isconsole(tp)) {
        /* The log device is a write-only diagnostics device. */
        if (access & R_BIT) return EACCES;
   } else {
@@ -809,7 +809,7 @@ static int do_close(devminor_t minor)
   if ((tp = line2tty(minor)) == NULL)
        return ENXIO;
 
-  if (minor != LOG_MINOR && --tp->tty_openct == 0) {
+  if ((minor != LOG_MINOR || !isconsole(tp)) && --tp->tty_openct == 0) {
        tp->tty_pgrp = 0;
        tty_icancel(tp);
        (*tp->tty_ocancel)(tp, 0);