1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
Reduces code in *_user files, by moving it in _kern files if already possible.
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it>
---
uml-linux-2.6.7-paolo/arch/um/drivers/chan_kern.c | 47 +++++++++++++++++++++
uml-linux-2.6.7-paolo/arch/um/drivers/chan_user.c | 48 ----------------------
2 files changed, 47 insertions(+), 48 deletions(-)
diff -puN arch/um/drivers/chan_kern.c~Move_away_from_user arch/um/drivers/chan_kern.c
--- uml-linux-2.6.7/arch/um/drivers/chan_kern.c~Move_away_from_user 2004-06-29 21:03:02.858202856 +0200
+++ uml-linux-2.6.7-paolo/arch/um/drivers/chan_kern.c 2004-06-29 21:03:02.861202400 +0200
@@ -17,6 +17,7 @@
#include "irq_user.h"
#include "sigio.h"
#include "line.h"
+#include "os.h"
static void *not_configged_init(char *str, int device, struct chan_opts *opts)
{
@@ -87,6 +88,52 @@ static struct chan_ops not_configged_ops
.winch = 0,
};
+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);
+}
+
+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);
+}
+
static void tty_receive_char(struct tty_struct *tty, char ch)
{
if(tty == NULL) return;
diff -puN arch/um/drivers/chan_user.c~Move_away_from_user arch/um/drivers/chan_user.c
--- uml-linux-2.6.7/arch/um/drivers/chan_user.c~Move_away_from_user 2004-06-29 21:03:02.859202704 +0200
+++ uml-linux-2.6.7-paolo/arch/um/drivers/chan_user.c 2004-06-29 21:03:02.861202400 +0200
@@ -21,31 +21,6 @@
#include "choose-mode.h"
#include "mode.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_console_write(int fd, const char *buf, int n, void *unused)
{
struct termios save, new;
@@ -62,29 +37,6 @@ int generic_console_write(int fd, const
return(err);
}
-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);
-}
-
static void winch_handler(int sig)
{
}
_
|