Bläddra i källkod

Some minor termios debugging output.

Andreas Kling 6 år sedan
förälder
incheckning
1cf20a2fe2
3 ändrade filer med 16 tillägg och 5 borttagningar
  1. 5 4
      Kernel/Process.cpp
  2. 9 0
      Kernel/TTY.cpp
  3. 2 1
      Kernel/TTY.h

+ 5 - 4
Kernel/Process.cpp

@@ -21,6 +21,7 @@
 //#define DEBUG_IO
 //#define TASK_DEBUG
 //#define FORK_DEBUG
+#define TERMIOS_DEBUG
 #define SIGNAL_DEBUG
 #define MAX_PROCESS_GIDS 32
 
@@ -1545,10 +1546,10 @@ int Process::sys$tcgetattr(int fd, Unix::termios* tp)
         return -EBADF;
     if (!descriptor->isTTY())
         return -ENOTTY;
-    auto& tty = *descriptor->tty();
 #ifdef TERMIOS_DEBUG
-    kprintf("sys$tcgetattr(fd=%d, tp=%p)\n", fd, tp);
+    dbgprintf("sys$tcgetattr(fd=%d, tp=%p)\n", fd, tp);
 #endif
+    auto& tty = *descriptor->tty();
     memcpy(tp, &tty.termios(), sizeof(Unix::termios));
     return 0;
 }
@@ -1563,10 +1564,10 @@ int Process::sys$tcsetattr(int fd, int optional_actions, const Unix::termios* tp
     if (!descriptor->isTTY())
         return -ENOTTY;
 #ifdef TERMIOS_DEBUG
-    kprintf("sys$tcsetattr(fd=%d, tp=%p)\n", fd, tp);
+    dbgprintf("sys$tcsetattr(fd=%d, tp=%p)\n", fd, tp);
 #endif
     auto& tty = *descriptor->tty();
-    memcpy(&tty.termios(), tp, sizeof(Unix::termios));
+    tty.set_termios(*tp);
     return 0;
 }
 

+ 9 - 0
Kernel/TTY.cpp

@@ -57,3 +57,12 @@ void TTY::interrupt()
         });
     }
 }
+
+void TTY::set_termios(const Unix::termios& t)
+{
+    m_termios = t;
+    dbgprintf("%s set_termios: IECHO? %u, ISIG? %u\n",
+        ttyName().characters(),
+        should_echo_input(),
+        should_generate_signals());
+}

+ 2 - 1
Kernel/TTY.h

@@ -16,7 +16,8 @@ public:
     void set_pgid(pid_t pgid) { m_pgid = pgid; }
     pid_t pgid() const { return m_pgid; }
 
-    Unix::termios& termios() { return m_termios; }
+    const Unix::termios& termios() const { return m_termios; }
+    void set_termios(const Unix::termios&);
     bool should_generate_signals() const { return m_termios.c_lflag & ISIG; }
     bool should_echo_input() const { return m_termios.c_lflag & ECHO; }