xref: /csrg-svn/sys/kern/tty_tty.c (revision 7824)
1 /*	tty_tty.c	4.10	82/08/22	*/
2 
3 /*
4  * Indirect driver for controlling tty.
5  *
6  * THIS IS GARBAGE: MUST SOON BE DONE WITH struct inode * IN PROC TABLE.
7  */
8 #include "../h/param.h"
9 #include "../h/systm.h"
10 #include "../h/conf.h"
11 #include "../h/dir.h"
12 #include "../h/user.h"
13 #include "../h/tty.h"
14 #include "../h/proc.h"
15 #include "../h/uio.h"
16 
17 /*ARGSUSED*/
18 syopen(dev, flag)
19 {
20 
21 	if (u.u_ttyp == NULL) {
22 		u.u_error = ENXIO;
23 		return;
24 	}
25 	(*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag);
26 }
27 
28 /*ARGSUSED*/
29 syread(dev, uio)
30 	dev_t dev;
31 	struct uio *uio;
32 {
33 
34 	if (u.u_ttyp == NULL) {
35 		u.u_error = ENXIO;
36 		return;
37 	}
38 	(*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd, uio);
39 }
40 
41 /*ARGSUSED*/
42 sywrite(dev, uio)
43 	dev_t dev;
44 	struct uio *uio;
45 {
46 
47 	if (u.u_ttyp == NULL) {
48 		u.u_error = ENXIO;
49 		return;
50 	}
51 	(*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd, uio);
52 }
53 
54 /*ARGSUSED*/
55 syioctl(dev, cmd, addr, flag)
56 	dev_t dev;
57 	int cmd;
58 	caddr_t addr;
59 	int flag;
60 {
61 
62 	if (cmd == TIOCNOTTY) {
63 		u.u_ttyp = 0;
64 		u.u_ttyd = 0;
65 		u.u_procp->p_pgrp = 0;
66 		return;
67 	}
68 	if (u.u_ttyp == NULL) {
69 		u.u_error = ENXIO;
70 		return;
71 	}
72 	(*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
73 }
74 
75 syselect(dev, flag)
76 {
77 
78 	if (u.u_ttyp == NULL) {
79 		u.u_error = ENXIO;
80 		return (0);
81 	}
82 	return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag));
83 }
84