HomeFreeBSD

Fix draining in ttydev_leave():

Description

Fix draining in ttydev_leave():

  1. ERESTART is not only returned when the revoke count changed. It is also returned when a signal is received. While a change in the revoke count should be ignored, a signal should not.
  2. Waiting until the output queue is entirely drained can cause a hang when the underlying device is stuck or broken.

Have tty_drain() take care of this by telling it when we're leaving.
When leaving, tty_drain() will use a timed wait to address point 2
above and it will check the revoke count to handle point 1 above.
The timeout is set to 1 second, which is arbitrary and long enough
to expect a change in the output queue.

Discussed with: jilles@
Reported by: Yamagi Burmeister <lists@yamagi.org>

Details

Provenance
marcelAuthored on
Parents
rS272788: Integrate usr.bin/gzip/tests from NetBSD into atf/kyua
Branches
Unknown
Tags
Unknown

Event Timeline