LCOV - code coverage report
Current view: top level - drivers/tty/hvc - hvc_console.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 8 0.0 %
Date: 2022-04-01 14:17:54 Functions: 0 1 0.0 %
Branches: 0 0 -

           Branch data     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