LCOV - code coverage report
Current view: top level - drivers/tty/hvc - hvc_console.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 8 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0+ */
       2             : /*
       3             :  * hvc_console.h
       4             :  * Copyright (C) 2005 IBM Corporation
       5             :  *
       6             :  * Author(s):
       7             :  *      Ryan S. Arnold <rsa@us.ibm.com>
       8             :  *
       9             :  * hvc_console header information:
      10             :  *      moved here from arch/powerpc/include/asm/hvconsole.h
      11             :  *      and drivers/char/hvc_console.c
      12             :  */
      13             : 
      14             : #ifndef HVC_CONSOLE_H
      15             : #define HVC_CONSOLE_H
      16             : #include <linux/kref.h>
      17             : #include <linux/tty.h>
      18             : #include <linux/spinlock.h>
      19             : 
      20             : /*
      21             :  * This is the max number of console adapters that can/will be found as
      22             :  * console devices on first stage console init.  Any number beyond this range
      23             :  * can't be used as a console device but is still a valid tty device.
      24             :  */
      25             : #define MAX_NR_HVC_CONSOLES     16
      26             : 
      27             : /*
      28             :  * The Linux TTY code does not support dynamic addition of tty derived devices
      29             :  * so we need to know how many tty devices we might need when space is allocated
      30             :  * for the tty device.  Since this driver supports hotplug of vty adapters we
      31             :  * need to make sure we have enough allocated.
      32             :  */
      33             : #define HVC_ALLOC_TTY_ADAPTERS  8
      34             : 
      35             : struct hvc_struct {
      36             :         struct tty_port port;
      37             :         spinlock_t lock;
      38             :         int index;
      39             :         int do_wakeup;
      40             :         char *outbuf;
      41             :         int outbuf_size;
      42             :         int n_outbuf;
      43             :         uint32_t vtermno;
      44             :         const struct hv_ops *ops;
      45             :         int irq_requested;
      46             :         int data;
      47             :         struct winsize ws;
      48             :         struct work_struct tty_resize;
      49             :         struct list_head next;
      50             :         unsigned long flags;
      51             : };
      52             : 
      53             : /* implemented by a low level driver */
      54             : struct hv_ops {
      55             :         int (*get_chars)(uint32_t vtermno, char *buf, int count);
      56             :         int (*put_chars)(uint32_t vtermno, const char *buf, int count);
      57             :         int (*flush)(uint32_t vtermno, bool wait);
      58             : 
      59             :         /* Callbacks for notification. Called in open, close and hangup */
      60             :         int (*notifier_add)(struct hvc_struct *hp, int irq);
      61             :         void (*notifier_del)(struct hvc_struct *hp, int irq);
      62             :         void (*notifier_hangup)(struct hvc_struct *hp, int irq);
      63             : 
      64             :         /* tiocmget/set implementation */
      65             :         int (*tiocmget)(struct hvc_struct *hp);
      66             :         int (*tiocmset)(struct hvc_struct *hp, unsigned int set, unsigned int clear);
      67             : 
      68             :         /* Callbacks to handle tty ports */
      69             :         void (*dtr_rts)(struct hvc_struct *hp, int raise);
      70             : };
      71             : 
      72             : /* Register a vterm and a slot index for use as a console (console_init) */
      73             : extern int hvc_instantiate(uint32_t vtermno, int index,
      74             :                            const struct hv_ops *ops);
      75             : 
      76             : /* register a vterm for hvc tty operation (module_init or hotplug add) */
      77             : extern struct hvc_struct * hvc_alloc(uint32_t vtermno, int data,
      78             :                                      const struct hv_ops *ops, int outbuf_size);
      79             : /* remove a vterm from hvc tty operation (module_exit or hotplug remove) */
      80             : extern int hvc_remove(struct hvc_struct *hp);
      81             : 
      82             : /* data available */
      83             : int hvc_poll(struct hvc_struct *hp);
      84             : void hvc_kick(void);
      85             : 
      86             : /* Resize hvc tty terminal window */
      87             : extern void __hvc_resize(struct hvc_struct *hp, struct winsize ws);
      88             : 
      89           0 : static inline void hvc_resize(struct hvc_struct *hp, struct winsize ws)
      90             : {
      91           0 :         unsigned long flags;
      92             : 
      93           0 :         spin_lock_irqsave(&hp->lock, flags);
      94           0 :         __hvc_resize(hp, ws);
      95           0 :         spin_unlock_irqrestore(&hp->lock, flags);
      96           0 : }
      97             : 
      98             : /* default notifier for irq based notification */
      99             : extern int notifier_add_irq(struct hvc_struct *hp, int data);
     100             : extern void notifier_del_irq(struct hvc_struct *hp, int data);
     101             : extern void notifier_hangup_irq(struct hvc_struct *hp, int data);
     102             : 
     103             : 
     104             : #if defined(CONFIG_XMON) && defined(CONFIG_SMP)
     105             : #include <asm/xmon.h>
     106             : #else
     107           0 : static inline int cpus_are_in_xmon(void)
     108             : {
     109           0 :         return 0;
     110             : }
     111             : #endif
     112             : 
     113             : #endif // HVC_CONSOLE_H

Generated by: LCOV version 1.14