summaryrefslogtreecommitdiffstats
path: root/sys/sys
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2012-10-25 09:05:21 +0000
committered <ed@FreeBSD.org>2012-10-25 09:05:21 +0000
commitae88b227912c0ec48a0dde46fe47f423ca864059 (patch)
tree0b7387e61e42451b385944d1c8a832f952bfe5a3 /sys/sys
parent3d11eb1465fb275027ac5463f340907bdc11a0ad (diff)
downloadFreeBSD-src-ae88b227912c0ec48a0dde46fe47f423ca864059.zip
FreeBSD-src-ae88b227912c0ec48a0dde46fe47f423ca864059.tar.gz
Correct SIGTTIN handling.
In the old TTY layer, SIGTTIN was correctly handled like this: while (data should be read) { send SIGTTIN if not foreground process group read data } In the new TTY layer, however, this behaviour was changed, based on a false interpretation of the standard: send SIGTTIN if not foreground process group while (data should be read) { read data } Correct this by pushing tty_wait_background() into the ttydisc_read_*() functions. Reported by: koitsu PR: kern/173010 MFC after: 2 weeks
Diffstat (limited to 'sys/sys')
-rw-r--r--sys/sys/tty.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/sys/tty.h b/sys/sys/tty.h
index 42f264b..96b8821 100644
--- a/sys/sys/tty.h
+++ b/sys/sys/tty.h
@@ -180,6 +180,7 @@ void tty_signal_sessleader(struct tty *tp, int signal);
void tty_signal_pgrp(struct tty *tp, int signal);
/* Waking up readers/writers. */
int tty_wait(struct tty *tp, struct cv *cv);
+int tty_wait_background(struct tty *tp, struct thread *td, int sig);
int tty_timedwait(struct tty *tp, struct cv *cv, int timo);
void tty_wakeup(struct tty *tp, int flags);
OpenPOWER on IntegriCloud