]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/um/drivers/chan_user.c
uml: move userspace code to userspace file
[karo-tx-linux.git] / arch / um / drivers / chan_user.c
index 4d438f36ea2e66b68451dd6f9039b28e6dab11c2..249c877410d73b0105c9adb8770abaef600bafdd 100644 (file)
 #include "os.h"
 #include "choose-mode.h"
 #include "mode.h"
+#include "um_malloc.h"
+
+void generic_close(int fd, void *unused)
+{
+       os_close_file(fd);
+}
+
+int generic_read(int fd, char *c_out, void *unused)
+{
+       int n;
+
+       n = os_read_file(fd, c_out, sizeof(*c_out));
+
+       if(n == -EAGAIN)
+               return 0;
+       else if(n == 0)
+               return -EIO;
+       return n;
+}
+
+/* XXX Trivial wrapper around os_write_file */
+
+int generic_write(int fd, const char *buf, int n, void *unused)
+{
+       return os_write_file(fd, buf, n);
+}
+
+int generic_window_size(int fd, void *unused, unsigned short *rows_out,
+                       unsigned short *cols_out)
+{
+       int rows, cols;
+       int ret;
+
+       ret = os_window_size(fd, &rows, &cols);
+       if(ret < 0)
+               return ret;
+
+       ret = ((*rows_out != rows) || (*cols_out != cols));
+
+       *rows_out = rows;
+       *cols_out = cols;
+
+       return ret;
+}
+
+void generic_free(void *data)
+{
+       kfree(data);
+}
 
 int generic_console_write(int fd, const char *buf, int n)
 {