This source file includes following definitions.
- osf1_sys_ioctl
- osf1_ioctl_f
- osf1_ioctl_m
- osf1_ioctl_i
- osf1_ioctl_t
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 #include <sys/param.h>
62 #include <sys/systm.h>
63 #include <sys/ioctl.h>
64 #include <sys/termios.h>
65 #include <sys/mount.h>
66 #include <sys/syscallargs.h>
67
68 #include <compat/osf1/osf1.h>
69 #include <compat/osf1/osf1_syscallargs.h>
70
71 #ifdef SYSCALL_DEBUG
72 extern int scdebug;
73 #endif
74
75 int osf1_ioctl_f(struct proc *p, struct sys_ioctl_args *nuap,
76 register_t *retval, int cmd, int dir, int len);
77 int osf1_ioctl_i(struct proc *p, struct sys_ioctl_args *nuap,
78 register_t *retval, int cmd, int dir, int len);
79 int osf1_ioctl_t(struct proc *p, struct sys_ioctl_args *nuap,
80 register_t *retval, int cmd, int dir, int len);
81 int osf1_ioctl_m(struct proc *p, struct sys_ioctl_args *nuap,
82 register_t *retval, int cmd, int dir, int len);
83
84 int
85 osf1_sys_ioctl(p, v, retval)
86 struct proc *p;
87 void *v;
88 register_t *retval;
89 {
90 struct osf1_sys_ioctl_args *uap = v;
91 struct sys_ioctl_args a;
92 int op, dir, group, cmd, len;
93 #ifdef SYSCALL_DEBUG
94 char *dirstr;
95 #endif
96
97 op = SCARG(uap, com);
98 dir = op & OSF1_IOC_DIRMASK;
99 group = OSF1_IOCGROUP(op);
100 cmd = OSF1_IOCCMD(op);
101 len = OSF1_IOCPARM_LEN(op);
102
103 switch (dir) {
104 case OSF1_IOC_VOID:
105 dir = IOC_VOID;
106 #ifdef SYSCALL_DEBUG
107 dirstr = "none";
108 #endif
109 break;
110 case OSF1_IOC_OUT:
111 dir = IOC_OUT;
112 #ifdef SYSCALL_DEBUG
113 dirstr = "out";
114 #endif
115 break;
116 case OSF1_IOC_IN:
117 dir = IOC_IN;
118 #ifdef SYSCALL_DEBUG
119 dirstr = "in";
120 #endif
121 break;
122 case OSF1_IOC_INOUT:
123 dir = IOC_INOUT;
124 #ifdef SYSCALL_DEBUG
125 dirstr = "in-out";
126 #endif
127 break;
128 default:
129 return (EINVAL);
130 break;
131 }
132 #ifdef SYSCALL_DEBUG
133 if (scdebug)
134 printf(
135 "OSF/1 IOCTL: group = %c, cmd = %d, len = %d, dir = %s\n",
136 group, cmd, len, dirstr);
137 #endif
138
139 SCARG(&a, fd) = SCARG(uap, fd);
140 SCARG(&a, com) = SCARG(uap, com) & 0xffffffff;
141 SCARG(&a, data) = SCARG(uap, data);
142 switch (group) {
143 case 'f':
144 return osf1_ioctl_f(p, &a, retval, cmd, dir, len);
145 case 'i':
146 return osf1_ioctl_i(p, &a, retval, cmd, dir, len);
147 case 't':
148 return osf1_ioctl_t(p, &a, retval, cmd, dir, len);
149 case 'm':
150 return osf1_ioctl_m(p, &a, retval, cmd, dir, len);
151 default:
152 return (ENOTTY);
153 }
154 }
155
156 int
157 osf1_ioctl_f(p, uap, retval, cmd, dir, len)
158 struct proc *p;
159 struct sys_ioctl_args *uap;
160 register_t *retval;
161 int cmd;
162 int dir;
163 int len;
164 {
165
166 switch (cmd) {
167 case 1:
168 case 2:
169 case 123:
170 case 124:
171 case 125:
172 case 126:
173 case 127:
174
175 break;
176
177 default:
178 return (ENOTTY);
179 }
180
181 return sys_ioctl(p, uap, retval);
182 }
183
184
185
186
187 int
188 osf1_ioctl_m(p, uap, retval, cmd, dir, len)
189 struct proc *p;
190 struct sys_ioctl_args *uap;
191 register_t *retval;
192 int cmd;
193 int dir;
194 int len;
195 {
196 switch (cmd) {
197 case 1:
198 case 2:
199
200 break;
201 default:
202 return (ENOTTY);
203 }
204
205 return sys_ioctl(p, uap, retval);
206 }
207
208 int
209 osf1_ioctl_i(p, uap, retval, cmd, dir, len)
210 struct proc *p;
211 struct sys_ioctl_args *uap;
212 register_t *retval;
213 int cmd;
214 int dir;
215 int len;
216 {
217
218 switch (cmd) {
219 case 12:
220 case 14:
221 case 16:
222 case 17:
223 case 19:
224 case 22:
225 case 23:
226 case 24:
227 case 25:
228 case 33:
229 case 34:
230 case 35:
231 case 37:
232
233 break;
234
235 default:
236 return (ENOTTY);
237 }
238
239 return sys_ioctl(p, uap, retval);
240 }
241
242 int
243 osf1_ioctl_t(p, uap, retval, cmd, dir, len)
244 struct proc *p;
245 struct sys_ioctl_args *uap;
246 register_t *retval;
247 int cmd;
248 int dir;
249 int len;
250 {
251
252 switch (cmd) {
253 #ifdef COMPAT_43
254 case 8:
255 case 9:
256 #endif
257 case 19:
258 case 20:
259 case 21:
260 case 22:
261 case 26:
262 case 27:
263 case 97:
264 case 103:
265 case 104:
266
267 break;
268
269 default:
270 return (ENOTTY);
271 }
272
273 return sys_ioctl(p, uap, retval);
274 }