xref: /csrg-svn/sys/kern/tty_tty.c (revision 8558)
1 /*	tty_tty.c	4.12	82/10/17	*/
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 	dev_t dev;
20 	int flag;
21 {
22 
23 	if (u.u_ttyp == NULL)
24 		return (ENXIO);
25 	return ((*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 		return (ENXIO);
36 	return ((*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd, uio));
37 }
38 
39 /*ARGSUSED*/
40 sywrite(dev, uio)
41 	dev_t dev;
42 	struct uio *uio;
43 {
44 
45 	if (u.u_ttyp == NULL)
46 		return (ENXIO);
47 	return ((*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd, uio));
48 }
49 
50 /*ARGSUSED*/
51 syioctl(dev, cmd, addr, flag)
52 	dev_t dev;
53 	int cmd;
54 	caddr_t addr;
55 	int flag;
56 {
57 
58 	if (cmd == TIOCNOTTY) {
59 		u.u_ttyp = 0;
60 		u.u_ttyd = 0;
61 		u.u_procp->p_pgrp = 0;
62 		return (0);
63 	}
64 	if (u.u_ttyp == NULL)
65 		return (ENXIO);
66 	return ((*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag));
67 }
68 
69 syselect(dev, flag)
70 {
71 
72 	if (u.u_ttyp == NULL) {
73 		u.u_error = ENXIO;
74 		return (0);
75 	}
76 	return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag));
77 }
78