Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / um / drivers / tty.c
index e9eb9e3..94c9265 100644 (file)
@@ -5,7 +5,6 @@
 
 #include <stdio.h>
 #include <termios.h>
-#include <fcntl.h>
 #include <errno.h>
 #include <unistd.h>
 #include "chan_user.h"
@@ -19,7 +18,7 @@ struct tty_chan {
        struct termios tt;
 };
 
-void *tty_chan_init(char *str, int device, struct chan_opts *opts)
+static void *tty_chan_init(char *str, int device, struct chan_opts *opts)
 {
        struct tty_chan *data;
 
@@ -30,7 +29,8 @@ void *tty_chan_init(char *str, int device, struct chan_opts *opts)
        }
        str++;
 
-       if((data = um_kmalloc(sizeof(*data))) == NULL) 
+       data = um_kmalloc(sizeof(*data));
+       if(data == NULL)
                return(NULL);
        *data = ((struct tty_chan) { .dev       = str,
                                     .raw       = opts->raw });
@@ -38,29 +38,28 @@ void *tty_chan_init(char *str, int device, struct chan_opts *opts)
        return(data);
 }
 
-int tty_open(int input, int output, int primary, void *d, char **dev_out)
+static int tty_open(int input, int output, int primary, void *d,
+                   char **dev_out)
 {
        struct tty_chan *data = d;
-       int fd;
+       int fd, err;
 
        fd = os_open_file(data->dev, of_set_rw(OPENFLAGS(), input, output), 0);
        if(fd < 0) return(fd);
        if(data->raw){
-               tcgetattr(fd, &data->tt);
-               raw(fd, 0);
+               CATCH_EINTR(err = tcgetattr(fd, &data->tt));
+               if(err)
+                       return(err);
+
+               err = raw(fd);
+               if(err)
+                       return(err);
        }
 
        *dev_out = data->dev;
        return(fd);
 }
 
-int tty_console_write(int fd, const char *buf, int n, void *d)
-{
-       struct tty_chan *data = d;
-
-       return(generic_console_write(fd, buf, n, &data->tt));
-}
-
 struct chan_ops tty_ops = {
        .type           = "tty",
        .init           = tty_chan_init,
@@ -68,7 +67,7 @@ struct chan_ops tty_ops = {
        .close          = generic_close,
        .read           = generic_read,
        .write          = generic_write,
-       .console_write  = tty_console_write,
+       .console_write  = generic_console_write,
        .window_size    = generic_window_size,
        .free           = generic_free,
        .winch          = 0,