Deleted Added
full compact
pty.c (12813) pty.c (12819)
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)tty_pty.c 8.2 (Berkeley) 9/23/93
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)tty_pty.c 8.2 (Berkeley) 9/23/93
34 * $Id: tty_pty.c,v 1.31 1995/12/10 15:55:17 bde Exp $
34 * $Id: tty_pty.c,v 1.32 1995/12/13 15:13:15 julian Exp $
35 */
36
37/*
38 * Pseudo-teletype Driver
39 * (Actually two drivers, requiring two entries in 'cdevsw')
40 */
41#include "pty.h" /* XXX */
42

--- 8 unchanged lines hidden (view full) ---

51#include <sys/kernel.h>
52#include <sys/vnode.h>
53#include <sys/signalvar.h>
54
55#ifdef DEVFS
56#include <sys/devfsext.h>
57#endif /*DEVFS*/
58
35 */
36
37/*
38 * Pseudo-teletype Driver
39 * (Actually two drivers, requiring two entries in 'cdevsw')
40 */
41#include "pty.h" /* XXX */
42

--- 8 unchanged lines hidden (view full) ---

51#include <sys/kernel.h>
52#include <sys/vnode.h>
53#include <sys/signalvar.h>
54
55#ifdef DEVFS
56#include <sys/devfsext.h>
57#endif /*DEVFS*/
58
59void ptyattach __P((int n));
60void ptsstart __P((struct tty *tp));
61void ptcwakeup __P((struct tty *tp, int flag));
59static void ptyattach __P((int n));
60static void ptsstart __P((struct tty *tp));
61static void ptcwakeup __P((struct tty *tp, int flag));
62
63static d_open_t ptsopen;
64static d_close_t ptsclose;
65static d_read_t ptsread;
66static d_write_t ptswrite;
67static d_ioctl_t ptyioctl;
68static d_stop_t ptsstop;
69static d_devtotty_t ptydevtotty;

--- 23 unchanged lines hidden (view full) ---

93#endif
94
95#define BUFSIZ 100 /* Chunk size iomoved to/from user */
96
97/*
98 * pts == /dev/tty[pqrsPQRS][0123456789abcdefghijklmnopqrstuv]
99 * ptc == /dev/pty[pqrsPQRS][0123456789abcdefghijklmnopqrstuv]
100 */
62
63static d_open_t ptsopen;
64static d_close_t ptsclose;
65static d_read_t ptsread;
66static d_write_t ptswrite;
67static d_ioctl_t ptyioctl;
68static d_stop_t ptsstop;
69static d_devtotty_t ptydevtotty;

--- 23 unchanged lines hidden (view full) ---

93#endif
94
95#define BUFSIZ 100 /* Chunk size iomoved to/from user */
96
97/*
98 * pts == /dev/tty[pqrsPQRS][0123456789abcdefghijklmnopqrstuv]
99 * ptc == /dev/pty[pqrsPQRS][0123456789abcdefghijklmnopqrstuv]
100 */
101struct tty pt_tty[NPTY]; /* XXX */
102struct pt_ioctl {
101static struct tty pt_tty[NPTY]; /* XXX */
102static struct pt_ioctl {
103 int pt_flags;
104 struct selinfo pt_selr, pt_selw;
105 u_char pt_send;
106 u_char pt_ucntl;
107} pt_ioctl[NPTY]; /* XXX */
103 int pt_flags;
104 struct selinfo pt_selr, pt_selw;
105 u_char pt_send;
106 u_char pt_ucntl;
107} pt_ioctl[NPTY]; /* XXX */
108int npty = NPTY; /* for pstat -t */
108static int npty = NPTY; /* for pstat -t */
109
110#define PF_PKT 0x08 /* packet mode */
111#define PF_STOPPED 0x10 /* user told stopped */
112#define PF_REMOTE 0x20 /* remote and flow controlled input */
113#define PF_NOSTOP 0x40
114#define PF_UCNTL 0x80 /* user control mode */
115
116/*
117 * Establish n (or default if n is 1) ptys in the system.
118 *
119 * XXX cdevsw & pstat require the array `pty[]' to be an array
120 */
109
110#define PF_PKT 0x08 /* packet mode */
111#define PF_STOPPED 0x10 /* user told stopped */
112#define PF_REMOTE 0x20 /* remote and flow controlled input */
113#define PF_NOSTOP 0x40
114#define PF_UCNTL 0x80 /* user control mode */
115
116/*
117 * Establish n (or default if n is 1) ptys in the system.
118 *
119 * XXX cdevsw & pstat require the array `pty[]' to be an array
120 */
121void
121static void
122ptyattach(n)
123 int n;
124{
125#ifdef notyet
126 char *mem;
127 register u_long ntb;
128#define DEFAULT_NPTY 32
129

--- 133 unchanged lines hidden (view full) ---

263 return (EIO);
264 return ((*linesw[tp->t_line].l_write)(tp, uio, flag));
265}
266
267/*
268 * Start output on pseudo-tty.
269 * Wake up process selecting or sleeping for input from controlling tty.
270 */
122ptyattach(n)
123 int n;
124{
125#ifdef notyet
126 char *mem;
127 register u_long ntb;
128#define DEFAULT_NPTY 32
129

--- 133 unchanged lines hidden (view full) ---

263 return (EIO);
264 return ((*linesw[tp->t_line].l_write)(tp, uio, flag));
265}
266
267/*
268 * Start output on pseudo-tty.
269 * Wake up process selecting or sleeping for input from controlling tty.
270 */
271void
271static void
272ptsstart(tp)
273 struct tty *tp;
274{
275 register struct pt_ioctl *pti = &pt_ioctl[minor(tp->t_dev)];
276
277 if (tp->t_state & TS_TTSTOP)
278 return;
279 if (pti->pt_flags & PF_STOPPED) {
280 pti->pt_flags &= ~PF_STOPPED;
281 pti->pt_send = TIOCPKT_START;
282 }
283 ptcwakeup(tp, FREAD);
284}
285
272ptsstart(tp)
273 struct tty *tp;
274{
275 register struct pt_ioctl *pti = &pt_ioctl[minor(tp->t_dev)];
276
277 if (tp->t_state & TS_TTSTOP)
278 return;
279 if (pti->pt_flags & PF_STOPPED) {
280 pti->pt_flags &= ~PF_STOPPED;
281 pti->pt_send = TIOCPKT_START;
282 }
283 ptcwakeup(tp, FREAD);
284}
285
286void
286static void
287ptcwakeup(tp, flag)
288 struct tty *tp;
289 int flag;
290{
291 struct pt_ioctl *pti = &pt_ioctl[minor(tp->t_dev)];
292
293 if (flag & FREAD) {
294 selwakeup(&pti->pt_selr);

--- 470 unchanged lines hidden (view full) ---

765 return (error);
766}
767
768static ptc_devsw_installed = 0;
769#ifdef DEVFS
770#define MAXUNITS (8 * 32)
771static void *devfs_token_pts[MAXUNITS];
772static void *devfs_token_ptc[MAXUNITS];
287ptcwakeup(tp, flag)
288 struct tty *tp;
289 int flag;
290{
291 struct pt_ioctl *pti = &pt_ioctl[minor(tp->t_dev)];
292
293 if (flag & FREAD) {
294 selwakeup(&pti->pt_selr);

--- 470 unchanged lines hidden (view full) ---

765 return (error);
766}
767
768static ptc_devsw_installed = 0;
769#ifdef DEVFS
770#define MAXUNITS (8 * 32)
771static void *devfs_token_pts[MAXUNITS];
772static void *devfs_token_ptc[MAXUNITS];
773const char jnames[] = "pqrsPQRS";
774const char knames[] = "0123456789abcdefghijklmnopqrstuv";
773static const char jnames[] = "pqrsPQRS";
774static const char knames[] = "0123456789abcdefghijklmnopqrstuv";
775#endif
776
777static void
778ptc_drvinit(void *unused)
779{
780#ifdef DEVFS
781 int i,j,k;
782 char name[16];

--- 36 unchanged lines hidden ---
775#endif
776
777static void
778ptc_drvinit(void *unused)
779{
780#ifdef DEVFS
781 int i,j,k;
782 char name[16];

--- 36 unchanged lines hidden ---