This source file includes following definitions.
- svr4_fil_ioctl
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 #include <sys/param.h>
32 #include <sys/proc.h>
33 #include <sys/systm.h>
34 #include <sys/file.h>
35 #include <sys/filedesc.h>
36 #include <sys/ioctl.h>
37 #include <sys/termios.h>
38 #include <sys/tty.h>
39 #include <sys/socket.h>
40 #include <sys/mount.h>
41 #include <net/if.h>
42 #include <sys/malloc.h>
43
44 #include <sys/syscallargs.h>
45
46 #include <compat/svr4/svr4_types.h>
47 #include <compat/svr4/svr4_util.h>
48 #include <compat/svr4/svr4_signal.h>
49 #include <compat/svr4/svr4_syscallargs.h>
50 #include <compat/svr4/svr4_stropts.h>
51 #include <compat/svr4/svr4_ioctl.h>
52 #include <compat/svr4/svr4_filio.h>
53
54
55 int
56 svr4_fil_ioctl(fp, p, retval, fd, cmd, data)
57 struct file *fp;
58 struct proc *p;
59 register_t *retval;
60 int fd;
61 u_long cmd;
62 caddr_t data;
63 {
64 int error;
65 int num;
66 struct filedesc *fdp = p->p_fd;
67 int (*ctl)(struct file *, u_long, caddr_t, struct proc *) =
68 fp->f_ops->fo_ioctl;
69
70 *retval = 0;
71
72 switch (cmd) {
73 case SVR4_FIOCLEX:
74 fdp->fd_ofileflags[fd] |= UF_EXCLOSE;
75 return 0;
76
77 case SVR4_FIONCLEX:
78 fdp->fd_ofileflags[fd] &= ~UF_EXCLOSE;
79 return 0;
80
81 case SVR4_FIOGETOWN:
82 case SVR4_FIOSETOWN:
83 case SVR4_FIOASYNC:
84 case SVR4_FIONBIO:
85 case SVR4_FIONREAD:
86 if ((error = copyin(data, &num, sizeof(num))) != 0)
87 return error;
88
89 switch (cmd) {
90 case SVR4_FIOGETOWN: cmd = FIOGETOWN; break;
91 case SVR4_FIOSETOWN: cmd = FIOSETOWN; break;
92 case SVR4_FIOASYNC: cmd = FIOASYNC; break;
93 case SVR4_FIONBIO: cmd = FIONBIO; break;
94 case SVR4_FIONREAD: cmd = FIONREAD; break;
95 }
96
97 error = (*ctl)(fp, cmd, (caddr_t) &num, p);
98
99 if (error)
100 return error;
101
102 return copyout(&num, data, sizeof(num));
103
104 default:
105 DPRINTF(("Unknown svr4 filio %lx\n", cmd));
106 return 0;
107 }
108 }