#ifndef _LINUX_TTY_H
#define _LINUX_TTY_H
#include <linux/fs.h>
#include <linux/major.h>
#include <linux/termios.h>
#include <linux/workqueue.h>
#include <linux/tty_driver.h>
#include <linux/tty_ldisc.h>
#include <linux/tty_port.h>
#include <linux/mutex.h>
#include <linux/tty_flags.h>
#include <uapi/linux/tty.h>
#include <linux/rwsem.h>
#include <linux/llist.h>
#define NR_UNIX98_PTY_DEFAULT …
#define NR_UNIX98_PTY_RESERVE …
#define NR_UNIX98_PTY_MAX …
#define __DISABLED_CHAR …
#define INTR_CHAR(tty) …
#define QUIT_CHAR(tty) …
#define ERASE_CHAR(tty) …
#define KILL_CHAR(tty) …
#define EOF_CHAR(tty) …
#define TIME_CHAR(tty) …
#define MIN_CHAR(tty) …
#define SWTC_CHAR(tty) …
#define START_CHAR(tty) …
#define STOP_CHAR(tty) …
#define SUSP_CHAR(tty) …
#define EOL_CHAR(tty) …
#define REPRINT_CHAR(tty) …
#define DISCARD_CHAR(tty) …
#define WERASE_CHAR(tty) …
#define LNEXT_CHAR(tty) …
#define EOL2_CHAR(tty) …
#define _I_FLAG(tty, f) …
#define _O_FLAG(tty, f) …
#define _C_FLAG(tty, f) …
#define _L_FLAG(tty, f) …
#define I_IGNBRK(tty) …
#define I_BRKINT(tty) …
#define I_IGNPAR(tty) …
#define I_PARMRK(tty) …
#define I_INPCK(tty) …
#define I_ISTRIP(tty) …
#define I_INLCR(tty) …
#define I_IGNCR(tty) …
#define I_ICRNL(tty) …
#define I_IUCLC(tty) …
#define I_IXON(tty) …
#define I_IXANY(tty) …
#define I_IXOFF(tty) …
#define I_IMAXBEL(tty) …
#define I_IUTF8(tty) …
#define O_OPOST(tty) …
#define O_OLCUC(tty) …
#define O_ONLCR(tty) …
#define O_OCRNL(tty) …
#define O_ONOCR(tty) …
#define O_ONLRET(tty) …
#define O_OFILL(tty) …
#define O_OFDEL(tty) …
#define O_NLDLY(tty) …
#define O_CRDLY(tty) …
#define O_TABDLY(tty) …
#define O_BSDLY(tty) …
#define O_VTDLY(tty) …
#define O_FFDLY(tty) …
#define C_BAUD(tty) …
#define C_CSIZE(tty) …
#define C_CSTOPB(tty) …
#define C_CREAD(tty) …
#define C_PARENB(tty) …
#define C_PARODD(tty) …
#define C_HUPCL(tty) …
#define C_CLOCAL(tty) …
#define C_CIBAUD(tty) …
#define C_CRTSCTS(tty) …
#define C_CMSPAR(tty) …
#define L_ISIG(tty) …
#define L_ICANON(tty) …
#define L_XCASE(tty) …
#define L_ECHO(tty) …
#define L_ECHOE(tty) …
#define L_ECHOK(tty) …
#define L_ECHONL(tty) …
#define L_NOFLSH(tty) …
#define L_TOSTOP(tty) …
#define L_ECHOCTL(tty) …
#define L_ECHOPRT(tty) …
#define L_ECHOKE(tty) …
#define L_FLUSHO(tty) …
#define L_PENDIN(tty) …
#define L_IEXTEN(tty) …
#define L_EXTPROC(tty) …
struct device;
struct signal_struct;
struct tty_operations;
struct tty_struct { … } __randomize_layout;
struct tty_file_private { … };
#define TTY_THROTTLED …
#define TTY_IO_ERROR …
#define TTY_OTHER_CLOSED …
#define TTY_EXCLUSIVE …
#define TTY_DO_WRITE_WAKEUP …
#define TTY_LDISC_OPEN …
#define TTY_PTY_LOCK …
#define TTY_NO_WRITE_SPLIT …
#define TTY_HUPPED …
#define TTY_HUPPING …
#define TTY_LDISC_CHANGING …
#define TTY_LDISC_HALTED …
static inline bool tty_io_nonblock(struct tty_struct *tty, struct file *file)
{ … }
static inline bool tty_io_error(struct tty_struct *tty)
{ … }
static inline bool tty_throttled(struct tty_struct *tty)
{ … }
#ifdef CONFIG_TTY
void tty_kref_put(struct tty_struct *tty);
struct pid *tty_get_pgrp(struct tty_struct *tty);
void tty_vhangup_self(void);
void disassociate_ctty(int priv);
dev_t tty_devnum(struct tty_struct *tty);
void proc_clear_tty(struct task_struct *p);
struct tty_struct *get_current_tty(void);
int __init tty_init(void);
const char *tty_name(const struct tty_struct *tty);
struct tty_struct *tty_kopen_exclusive(dev_t device);
struct tty_struct *tty_kopen_shared(dev_t device);
void tty_kclose(struct tty_struct *tty);
int tty_dev_name_to_number(const char *name, dev_t *number);
#else
static inline void tty_kref_put(struct tty_struct *tty)
{ }
static inline struct pid *tty_get_pgrp(struct tty_struct *tty)
{ return NULL; }
static inline void tty_vhangup_self(void)
{ }
static inline void disassociate_ctty(int priv)
{ }
static inline dev_t tty_devnum(struct tty_struct *tty)
{ return 0; }
static inline void proc_clear_tty(struct task_struct *p)
{ }
static inline struct tty_struct *get_current_tty(void)
{ return NULL; }
static inline int __init tty_init(void)
{ return 0; }
static inline const char *tty_name(const struct tty_struct *tty)
{ return "(none)"; }
static inline struct tty_struct *tty_kopen_exclusive(dev_t device)
{ return ERR_PTR(-ENODEV); }
static inline void tty_kclose(struct tty_struct *tty)
{ }
static inline int tty_dev_name_to_number(const char *name, dev_t *number)
{ return -ENOTSUPP; }
#endif
extern struct ktermios tty_std_termios;
int vcs_init(void);
extern const struct class tty_class;
static inline struct tty_struct *tty_kref_get(struct tty_struct *tty)
{ … }
const char *tty_driver_name(const struct tty_struct *tty);
void tty_wait_until_sent(struct tty_struct *tty, long timeout);
void stop_tty(struct tty_struct *tty);
void start_tty(struct tty_struct *tty);
void tty_write_message(struct tty_struct *tty, char *msg);
int tty_send_xchar(struct tty_struct *tty, u8 ch);
int tty_put_char(struct tty_struct *tty, u8 c);
unsigned int tty_chars_in_buffer(struct tty_struct *tty);
unsigned int tty_write_room(struct tty_struct *tty);
void tty_driver_flush_buffer(struct tty_struct *tty);
void tty_unthrottle(struct tty_struct *tty);
bool tty_throttle_safe(struct tty_struct *tty);
bool tty_unthrottle_safe(struct tty_struct *tty);
int tty_do_resize(struct tty_struct *tty, struct winsize *ws);
int tty_get_icount(struct tty_struct *tty,
struct serial_icounter_struct *icount);
int tty_get_tiocm(struct tty_struct *tty);
int is_current_pgrp_orphaned(void);
void tty_hangup(struct tty_struct *tty);
void tty_vhangup(struct tty_struct *tty);
int tty_hung_up_p(struct file *filp);
void do_SAK(struct tty_struct *tty);
void __do_SAK(struct tty_struct *tty);
void no_tty(void);
speed_t tty_termios_baud_rate(const struct ktermios *termios);
void tty_termios_encode_baud_rate(struct ktermios *termios, speed_t ibaud,
speed_t obaud);
void tty_encode_baud_rate(struct tty_struct *tty, speed_t ibaud,
speed_t obaud);
static inline speed_t tty_get_baud_rate(const struct tty_struct *tty)
{ … }
unsigned char tty_get_char_size(unsigned int cflag);
unsigned char tty_get_frame_size(unsigned int cflag);
void tty_termios_copy_hw(struct ktermios *new, const struct ktermios *old);
bool tty_termios_hw_change(const struct ktermios *a, const struct ktermios *b);
int tty_set_termios(struct tty_struct *tty, struct ktermios *kt);
void tty_wakeup(struct tty_struct *tty);
int tty_mode_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg);
int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx);
void tty_release_struct(struct tty_struct *tty, int idx);
void tty_init_termios(struct tty_struct *tty);
void tty_save_termios(struct tty_struct *tty);
int tty_standard_install(struct tty_driver *driver,
struct tty_struct *tty);
extern struct mutex tty_mutex;
void n_tty_inherit_ops(struct tty_ldisc_ops *ops);
#ifdef CONFIG_TTY
void __init n_tty_init(void);
#else
static inline void n_tty_init(void) { }
#endif
#ifdef CONFIG_AUDIT
void tty_audit_exit(void);
void tty_audit_fork(struct signal_struct *sig);
int tty_audit_push(void);
#else
static inline void tty_audit_exit(void)
{
}
static inline void tty_audit_fork(struct signal_struct *sig)
{
}
static inline int tty_audit_push(void)
{
return 0;
}
#endif
int n_tty_ioctl_helper(struct tty_struct *tty, unsigned int cmd,
unsigned long arg);
int vt_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg);
long vt_compat_ioctl(struct tty_struct *tty, unsigned int cmd,
unsigned long arg);
void tty_lock(struct tty_struct *tty);
int tty_lock_interruptible(struct tty_struct *tty);
void tty_unlock(struct tty_struct *tty);
void tty_lock_slave(struct tty_struct *tty);
void tty_unlock_slave(struct tty_struct *tty);
void tty_set_lock_subclass(struct tty_struct *tty);
#endif