LCOV - code coverage report
Current view: top level - drivers/tty - tty.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 3 0.0 %
Date: 2023-03-27 20:00:47 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : /*
       3             :  * TTY core internal functions
       4             :  */
       5             : 
       6             : #ifndef _TTY_INTERNAL_H
       7             : #define _TTY_INTERNAL_H
       8             : 
       9             : #define tty_msg(fn, tty, f, ...) \
      10             :         fn("%s %s: " f, tty_driver_name(tty), tty_name(tty), ##__VA_ARGS__)
      11             : 
      12             : #define tty_debug(tty, f, ...)  tty_msg(pr_debug, tty, f, ##__VA_ARGS__)
      13             : #define tty_notice(tty, f, ...) tty_msg(pr_notice, tty, f, ##__VA_ARGS__)
      14             : #define tty_warn(tty, f, ...)   tty_msg(pr_warn, tty, f, ##__VA_ARGS__)
      15             : #define tty_err(tty, f, ...)    tty_msg(pr_err, tty, f, ##__VA_ARGS__)
      16             : 
      17             : #define tty_info_ratelimited(tty, f, ...) \
      18             :                 tty_msg(pr_info_ratelimited, tty, f, ##__VA_ARGS__)
      19             : 
      20             : /*
      21             :  * Lock subclasses for tty locks
      22             :  *
      23             :  * TTY_LOCK_NORMAL is for normal ttys and master ptys.
      24             :  * TTY_LOCK_SLAVE is for slave ptys only.
      25             :  *
      26             :  * Lock subclasses are necessary for handling nested locking with pty pairs.
      27             :  * tty locks which use nested locking:
      28             :  *
      29             :  * legacy_mutex - Nested tty locks are necessary for releasing pty pairs.
      30             :  *                The stable lock order is master pty first, then slave pty.
      31             :  * termios_rwsem - The stable lock order is tty_buffer lock->termios_rwsem.
      32             :  *                 Subclassing this lock enables the slave pty to hold its
      33             :  *                 termios_rwsem when claiming the master tty_buffer lock.
      34             :  * tty_buffer lock - slave ptys can claim nested buffer lock when handling
      35             :  *                   signal chars. The stable lock order is slave pty, then
      36             :  *                   master.
      37             :  */
      38             : enum {
      39             :         TTY_LOCK_NORMAL = 0,
      40             :         TTY_LOCK_SLAVE,
      41             : };
      42             : 
      43             : /* Values for tty->flow_change */
      44             : #define TTY_THROTTLE_SAFE       1
      45             : #define TTY_UNTHROTTLE_SAFE     2
      46             : 
      47             : static inline void __tty_set_flow_change(struct tty_struct *tty, int val)
      48             : {
      49           0 :         tty->flow_change = val;
      50             : }
      51             : 
      52             : static inline void tty_set_flow_change(struct tty_struct *tty, int val)
      53             : {
      54           0 :         tty->flow_change = val;
      55           0 :         smp_mb();
      56             : }
      57             : 
      58             : int tty_ldisc_lock(struct tty_struct *tty, unsigned long timeout);
      59             : void tty_ldisc_unlock(struct tty_struct *tty);
      60             : 
      61             : int __tty_check_change(struct tty_struct *tty, int sig);
      62             : int tty_check_change(struct tty_struct *tty);
      63             : void __stop_tty(struct tty_struct *tty);
      64             : void __start_tty(struct tty_struct *tty);
      65             : void tty_vhangup_session(struct tty_struct *tty);
      66             : void tty_open_proc_set_tty(struct file *filp, struct tty_struct *tty);
      67             : int tty_signal_session_leader(struct tty_struct *tty, int exit_session);
      68             : void session_clear_tty(struct pid *session);
      69             : void tty_buffer_free_all(struct tty_port *port);
      70             : void tty_buffer_flush(struct tty_struct *tty, struct tty_ldisc *ld);
      71             : void tty_buffer_init(struct tty_port *port);
      72             : void tty_buffer_set_lock_subclass(struct tty_port *port);
      73             : bool tty_buffer_restart_work(struct tty_port *port);
      74             : bool tty_buffer_cancel_work(struct tty_port *port);
      75             : void tty_buffer_flush_work(struct tty_port *port);
      76             : speed_t tty_termios_input_baud_rate(const struct ktermios *termios);
      77             : void tty_ldisc_hangup(struct tty_struct *tty, bool reset);
      78             : int tty_ldisc_reinit(struct tty_struct *tty, int disc);
      79             : long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
      80             : long tty_jobctrl_ioctl(struct tty_struct *tty, struct tty_struct *real_tty,
      81             :                        struct file *file, unsigned int cmd, unsigned long arg);
      82             : void tty_default_fops(struct file_operations *fops);
      83             : struct tty_struct *alloc_tty_struct(struct tty_driver *driver, int idx);
      84             : int tty_alloc_file(struct file *file);
      85             : void tty_add_file(struct tty_struct *tty, struct file *file);
      86             : void tty_free_file(struct file *file);
      87             : int tty_release(struct inode *inode, struct file *filp);
      88             : 
      89             : #define tty_is_writelocked(tty)  (mutex_is_locked(&tty->atomic_write_lock))
      90             : 
      91             : int tty_ldisc_setup(struct tty_struct *tty, struct tty_struct *o_tty);
      92             : void tty_ldisc_release(struct tty_struct *tty);
      93             : int __must_check tty_ldisc_init(struct tty_struct *tty);
      94             : void tty_ldisc_deinit(struct tty_struct *tty);
      95             : 
      96             : extern int tty_ldisc_autoload;
      97             : 
      98             : /* tty_audit.c */
      99             : #ifdef CONFIG_AUDIT
     100             : void tty_audit_add_data(struct tty_struct *tty, const void *data, size_t size);
     101             : void tty_audit_tiocsti(struct tty_struct *tty, char ch);
     102             : #else
     103             : static inline void tty_audit_add_data(struct tty_struct *tty, const void *data,
     104             :                                       size_t size)
     105             : {
     106             : }
     107             : static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch)
     108             : {
     109             : }
     110             : #endif
     111             : 
     112             : ssize_t redirected_tty_write(struct kiocb *, struct iov_iter *);
     113             : 
     114             : int tty_insert_flip_string_and_push_buffer(struct tty_port *port,
     115             :                 const unsigned char *chars, size_t cnt);
     116             : 
     117             : #endif

Generated by: LCOV version 1.14