Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11cf48ea authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman
Browse files

tty: Relocate tty_ldisc_halt() to avoid forward declaration



tty_ldisc_halt() will use the file-scoped function, tty_ldisc_wait_idle(),
in the following patch.

Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 76bc35e7
Loading
Loading
Loading
Loading
+23 −23
Original line number Diff line number Diff line
@@ -498,29 +498,6 @@ static void tty_ldisc_restore(struct tty_struct *tty, struct tty_ldisc *old)
	}
}

/**
 *	tty_ldisc_halt		-	shut down the line discipline
 *	@tty: tty device
 *
 *	Shut down the line discipline and work queue for this tty device.
 *	The TTY_LDISC flag being cleared ensures no further references can
 *	be obtained while the delayed work queue halt ensures that no more
 *	data is fed to the ldisc.
 *
 *	You need to do a 'flush_scheduled_work()' (outside the ldisc_mutex)
 *	in order to make sure any currently executing ldisc work is also
 *	flushed.
 */

static int tty_ldisc_halt(struct tty_struct *tty)
{
	int scheduled;
	clear_bit(TTY_LDISC, &tty->flags);
	scheduled = cancel_work_sync(&tty->port->buf.work);
	set_bit(TTY_LDISC_HALTED, &tty->flags);
	return scheduled;
}

/**
 *	tty_ldisc_flush_works	-	flush all works of a tty
 *	@tty: tty device to flush works for
@@ -550,6 +527,29 @@ static int tty_ldisc_wait_idle(struct tty_struct *tty, long timeout)
	return ret > 0 ? 0 : -EBUSY;
}

/**
 *	tty_ldisc_halt		-	shut down the line discipline
 *	@tty: tty device
 *
 *	Shut down the line discipline and work queue for this tty device.
 *	The TTY_LDISC flag being cleared ensures no further references can
 *	be obtained while the delayed work queue halt ensures that no more
 *	data is fed to the ldisc.
 *
 *	You need to do a 'flush_scheduled_work()' (outside the ldisc_mutex)
 *	in order to make sure any currently executing ldisc work is also
 *	flushed.
 */

static int tty_ldisc_halt(struct tty_struct *tty)
{
	int scheduled;
	clear_bit(TTY_LDISC, &tty->flags);
	scheduled = cancel_work_sync(&tty->port->buf.work);
	set_bit(TTY_LDISC_HALTED, &tty->flags);
	return scheduled;
}

/**
 *	tty_ldisc_hangup_halt - halt the line discipline for hangup
 *	@tty: tty being hung up