Commit a72f4187 authored by Jiri Slaby (SUSE)'s avatar Jiri Slaby (SUSE) Committed by Greg Kroah-Hartman
Browse files

tty: convert "TTY Struct Flags" to an enum



Convert TTY_* macros (flags) to an enum. This allows for easier
kernel-doc (the comment needed fine tuning), grouping of these nicely,
and proper checking.

Note that these are bit positions. So they are used such as
test_bit(TTY_THROTTLED, ...). Given these are not the user API (only
in-kernel API/ABI), the bit positions are NOT preserved in this patch.
All are renumbered naturally using the enum-auto-numbering.

Signed-off-by: default avatarJiri Slaby (SUSE) <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20250317070046.24386-2-jirislaby@kernel.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d2fa8e52
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ TTY Struct Flags
================

.. kernel-doc:: include/linux/tty.h
   :doc: TTY Struct Flags
   :identifiers: tty_struct_flags

TTY Struct Reference
====================
+27 −25
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ struct tty_file_private {
};

/**
 * DOC: TTY Struct Flags
 * enum tty_struct_flags - TTY Struct Flags
 *
 * These bits are used in the :c:member:`tty_struct.flags` field.
 *
@@ -260,62 +260,64 @@ struct tty_file_private {
 * tty->write.  Thus, you must use the inline functions set_bit() and
 * clear_bit() to make things atomic.
 *
 * TTY_THROTTLED
 * @TTY_THROTTLED:
 *	Driver input is throttled. The ldisc should call
 *	:c:member:`tty_driver.unthrottle()` in order to resume reception when
 *	it is ready to process more data (at threshold min).
 *
 * TTY_IO_ERROR
 * @TTY_IO_ERROR:
 *	If set, causes all subsequent userspace read/write calls on the tty to
 *	fail, returning -%EIO. (May be no ldisc too.)
 *
 * TTY_OTHER_CLOSED
 * @TTY_OTHER_CLOSED:
 *	Device is a pty and the other side has closed.
 *
 * TTY_EXCLUSIVE
 * @TTY_EXCLUSIVE:
 *	Exclusive open mode (a single opener).
 *
 * TTY_DO_WRITE_WAKEUP
 * @TTY_DO_WRITE_WAKEUP:
 *	If set, causes the driver to call the
 *	:c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume
 *	transmission when it can accept more data to transmit.
 *
 * TTY_LDISC_OPEN
 * @TTY_LDISC_OPEN:
 *	Indicates that a line discipline is open. For debugging purposes only.
 *
 * TTY_PTY_LOCK
 * @TTY_PTY_LOCK:
 *	A flag private to pty code to implement %TIOCSPTLCK/%TIOCGPTLCK logic.
 *
 * TTY_NO_WRITE_SPLIT
 * @TTY_NO_WRITE_SPLIT:
 *	Prevent driver from splitting up writes into smaller chunks (preserve
 *	write boundaries to driver).
 *
 * TTY_HUPPED
 * @TTY_HUPPED:
 *	The TTY was hung up. This is set post :c:member:`tty_driver.hangup()`.
 *
 * TTY_HUPPING
 * @TTY_HUPPING:
 *	The TTY is in the process of hanging up to abort potential readers.
 *
 * TTY_LDISC_CHANGING
 * @TTY_LDISC_CHANGING:
 *	Line discipline for this TTY is being changed. I/O should not block
 *	when this is set. Use tty_io_nonblock() to check.
 *
 * TTY_LDISC_HALTED
 * @TTY_LDISC_HALTED:
 *	Line discipline for this TTY was stopped. No work should be queued to
 *	this ldisc.
 */
#define TTY_THROTTLED		0
#define TTY_IO_ERROR		1
#define TTY_OTHER_CLOSED	2
#define TTY_EXCLUSIVE		3
#define TTY_DO_WRITE_WAKEUP	5
#define TTY_LDISC_OPEN		11
#define TTY_PTY_LOCK		16
#define TTY_NO_WRITE_SPLIT	17
#define TTY_HUPPED		18
#define TTY_HUPPING		19
#define TTY_LDISC_CHANGING	20
#define TTY_LDISC_HALTED	22
enum tty_struct_flags {
	TTY_THROTTLED,
	TTY_IO_ERROR,
	TTY_OTHER_CLOSED,
	TTY_EXCLUSIVE,
	TTY_DO_WRITE_WAKEUP,
	TTY_LDISC_OPEN,
	TTY_PTY_LOCK,
	TTY_NO_WRITE_SPLIT,
	TTY_HUPPED,
	TTY_HUPPING,
	TTY_LDISC_CHANGING,
	TTY_LDISC_HALTED,
};

static inline bool tty_io_nonblock(struct tty_struct *tty, struct file *file)
{