summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2004-06-25 21:54:49 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2004-06-25 21:54:49 +0000
commit950cce9b30fab4960984f17fabe9247b967ee510 (patch)
tree9ca414fa605246ef3e7b50f069137a32cc4b9641
parentdfc7e0081f58091dc7c0684572c6b9751fbf2089 (diff)
downloadsrc-test2-950cce9b30fab4960984f17fabe9247b967ee510.tar.gz
src-test2-950cce9b30fab4960984f17fabe9247b967ee510.zip
Notes
-rw-r--r--share/man/man4/pty.416
-rw-r--r--sys/kern/tty_pty.c98
-rw-r--r--sys/sys/ttycom.h1
3 files changed, 3 insertions, 112 deletions
diff --git a/share/man/man4/pty.4 b/share/man/man4/pty.4
index 925bd7338706..0234ee2fd75c 100644
--- a/share/man/man4/pty.4
+++ b/share/man/man4/pty.4
@@ -175,22 +175,6 @@ As with
mode, command operations may be detected with a
.Xr select 2
for exceptional conditions.
-.It Dv TIOCREMOTE
-A mode for the master half of a pseudo terminal, independent
-of
-.Dv TIOCPKT .
-This mode causes input to the pseudo terminal
-to be flow controlled and not input edited (regardless of the
-terminal mode).
-Each write to the control terminal produces
-a record boundary for the process reading the terminal.
-In normal usage, a write of data is like the data typed as a line
-on the terminal; a write of 0 bytes is like typing an end-of-file
-character.
-.Dv TIOCREMOTE
-can be used when doing remote line
-editing in a window manager, or whenever flow controlled input
-is required.
.El
.Sh FILES
.Bl -tag -width /dev/tty[p-sP-S][0-9a-v]x -compact
diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c
index 1cdea9376a05..23533a448c65 100644
--- a/sys/kern/tty_pty.c
+++ b/sys/kern/tty_pty.c
@@ -117,7 +117,6 @@ struct ptsc {
#define PF_PKT 0x08 /* packet mode */
#define PF_STOPPED 0x10 /* user told stopped */
-#define PF_REMOTE 0x20 /* remote and flow controlled input */
#define PF_NOSTOP 0x40
#define PF_UCNTL 0x80 /* user control mode */
@@ -223,49 +222,8 @@ ptsread(struct cdev *dev, struct uio *uio, int flag)
int error = 0;
again:
- if (pt->pt_flags & PF_REMOTE) {
- while (isbackground(p, tp)) {
- sx_slock(&proctree_lock);
- PROC_LOCK(p);
- if (SIGISMEMBER(p->p_sigacts->ps_sigignore, SIGTTIN) ||
- SIGISMEMBER(td->td_sigmask, SIGTTIN) ||
- p->p_pgrp->pg_jobc == 0 || p->p_flag & P_PPWAIT) {
- PROC_UNLOCK(p);
- sx_sunlock(&proctree_lock);
- return (EIO);
- }
- pg = p->p_pgrp;
- PROC_UNLOCK(p);
- PGRP_LOCK(pg);
- sx_sunlock(&proctree_lock);
- pgsignal(pg, SIGTTIN, 1);
- PGRP_UNLOCK(pg);
- error = ttysleep(tp, &lbolt, TTIPRI | PCATCH, "ptsbg",
- 0);
- if (error)
- return (error);
- }
- if (tp->t_canq.c_cc == 0) {
- if (flag & IO_NDELAY)
- return (EWOULDBLOCK);
- error = ttysleep(tp, TSA_PTS_READ(tp), TTIPRI | PCATCH,
- "ptsin", 0);
- if (error)
- return (error);
- goto again;
- }
- while (tp->t_canq.c_cc > 1 && uio->uio_resid > 0)
- if (ureadc(getc(&tp->t_canq), uio) < 0) {
- error = EFAULT;
- break;
- }
- if (tp->t_canq.c_cc == 1)
- (void) getc(&tp->t_canq);
- if (tp->t_canq.c_cc)
- return (error);
- } else
- if (tp->t_oproc)
- error = ttyld_read(tp, uio, flag);
+ if (tp->t_oproc)
+ error = ttyld_read(tp, uio, flag);
ptcwakeup(tp, FWRITE);
return (error);
}
@@ -477,9 +435,7 @@ ptcpoll(struct cdev *dev, int events, struct thread *td)
if (events & (POLLOUT | POLLWRNORM))
if (tp->t_state & TS_ISOPEN &&
- ((pt->pt_flags & PF_REMOTE) ?
- (tp->t_canq.c_cc == 0) :
- ((tp->t_rawq.c_cc + tp->t_canq.c_cc < TTYHOG - 2) ||
+ (((tp->t_rawq.c_cc + tp->t_canq.c_cc < TTYHOG - 2) ||
(tp->t_canq.c_cc == 0 && (tp->t_lflag & ICANON)))))
revents |= events & (POLLOUT | POLLWRNORM);
@@ -513,46 +469,6 @@ ptcwrite(struct cdev *dev, struct uio *uio, int flag)
again:
if ((tp->t_state&TS_ISOPEN) == 0)
goto block;
- if (pt->pt_flags & PF_REMOTE) {
- if (tp->t_canq.c_cc)
- goto block;
- while ((uio->uio_resid > 0 || cc > 0) &&
- tp->t_canq.c_cc < TTYHOG - 1) {
- if (cc == 0) {
- cc = min(uio->uio_resid, BUFSIZ);
- cc = min(cc, TTYHOG - 1 - tp->t_canq.c_cc);
- cp = locbuf;
- error = uiomove(cp, cc, uio);
- if (error)
- return (error);
- /* check again for safety */
- if ((tp->t_state & TS_ISOPEN) == 0) {
- /* adjust as usual */
- uio->uio_resid += cc;
- return (EIO);
- }
- }
- if (cc > 0) {
- cc = b_to_q((char *)cp, cc, &tp->t_canq);
- /*
- * XXX we don't guarantee that the canq size
- * is >= TTYHOG, so the above b_to_q() may
- * leave some bytes uncopied. However, space
- * is guaranteed for the null terminator if
- * we don't fail here since (TTYHOG - 1) is
- * not a multiple of CBSIZE.
- */
- if (cc > 0)
- break;
- }
- }
- /* adjust for data copied in but not written */
- uio->uio_resid += cc;
- (void) putc(0, &tp->t_canq);
- ttwakeup(tp);
- wakeup(TSA_PTS_READ(tp));
- return (0);
- }
while (uio->uio_resid > 0 || cc > 0) {
if (cc == 0) {
cc = min(uio->uio_resid, BUFSIZ);
@@ -643,14 +559,6 @@ ptyioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td
} else
pt->pt_flags &= ~PF_UCNTL;
return (0);
-
- case TIOCREMOTE:
- if (*(int *)data)
- pt->pt_flags |= PF_REMOTE;
- else
- pt->pt_flags &= ~PF_REMOTE;
- ttyflush(tp, FREAD|FWRITE);
- return (0);
}
/*
diff --git a/sys/sys/ttycom.h b/sys/sys/ttycom.h
index 244fd1d78f53..07db4ec4a532 100644
--- a/sys/sys/ttycom.h
+++ b/sys/sys/ttycom.h
@@ -112,7 +112,6 @@ struct winsize {
#define TIOCM_CD TIOCM_DCD
#define TIOCM_CAR TIOCM_DCD
#define TIOCM_RNG TIOCM_RI
-#define TIOCREMOTE _IOW('t', 105, int) /* remote input editing */
#define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */
#define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */
#define TIOCUCNTL _IOW('t', 102, int) /* pty: set/clr usr cntl mode */