]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/tty/n_tty.c
n_tty: Factor standard per-char i/o into separate fn
[karo-tx-linux.git] / drivers / tty / n_tty.c
index 2c120b63429557265f3c652d50097a57f5da8f9f..951ecfeed8d36e9bfc6567a4518a7959496636fd 100644 (file)
@@ -1569,6 +1569,22 @@ n_tty_receive_buf_closing(struct tty_struct *tty, const unsigned char *cp,
        }
 }
 
+static void
+n_tty_receive_buf_standard(struct tty_struct *tty, const unsigned char *cp,
+                          char *fp, int count)
+{
+       char flag = TTY_NORMAL;
+
+       while (count--) {
+               if (fp)
+                       flag = *fp++;
+               if (likely(flag == TTY_NORMAL))
+                       n_tty_receive_char(tty, *cp++);
+               else
+                       n_tty_receive_char_flagged(tty, *cp++, flag);
+       }
+}
+
 static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
                          char *fp, int count)
 {
@@ -1582,16 +1598,7 @@ static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
        else if (tty->closing && !L_EXTPROC(tty))
                n_tty_receive_buf_closing(tty, cp, fp, count);
        else {
-               char flag = TTY_NORMAL;
-
-               while (count--) {
-                       if (fp)
-                               flag = *fp++;
-                       if (likely(flag == TTY_NORMAL))
-                               n_tty_receive_char(tty, *cp++);
-                       else
-                               n_tty_receive_char_flagged(tty, *cp++, flag);
-               }
+               n_tty_receive_buf_standard(tty, cp, fp, count);
 
                flush_echoes(tty);
                if (tty->ops->flush_chars)