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