root/include/linux/console.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. con_debug_enter
  2. con_debug_leave
  3. console_sysfs_notify
  4. vgacon_text_force

   1 /*
   2  *  linux/include/linux/console.h
   3  *
   4  *  Copyright (C) 1993        Hamish Macdonald
   5  *
   6  * This file is subject to the terms and conditions of the GNU General Public
   7  * License.  See the file COPYING in the main directory of this archive
   8  * for more details.
   9  *
  10  * Changed:
  11  * 10-Mar-94: Arno Griffioen: Conversion for vt100 emulator port from PC LINUX
  12  */
  13 
  14 #ifndef _LINUX_CONSOLE_H_
  15 #define _LINUX_CONSOLE_H_ 1
  16 
  17 #include <linux/atomic.h>
  18 #include <linux/types.h>
  19 
  20 struct vc_data;
  21 struct console_font_op;
  22 struct console_font;
  23 struct module;
  24 struct tty_struct;
  25 struct notifier_block;
  26 
  27 /*
  28  * this is what the terminal answers to a ESC-Z or csi0c query.
  29  */
  30 #define VT100ID "\033[?1;2c"
  31 #define VT102ID "\033[?6c"
  32 
  33 enum con_scroll {
  34         SM_UP,
  35         SM_DOWN,
  36 };
  37 
  38 /**
  39  * struct consw - callbacks for consoles
  40  *
  41  * @con_scroll: move lines from @top to @bottom in direction @dir by @lines.
  42  *              Return true if no generic handling should be done.
  43  *              Invoked by csi_M and printing to the console.
  44  * @con_set_palette: sets the palette of the console to @table (optional)
  45  * @con_scrolldelta: the contents of the console should be scrolled by @lines.
  46  *                   Invoked by user. (optional)
  47  */
  48 struct consw {
  49         struct module *owner;
  50         const char *(*con_startup)(void);
  51         void    (*con_init)(struct vc_data *vc, int init);
  52         void    (*con_deinit)(struct vc_data *vc);
  53         void    (*con_clear)(struct vc_data *vc, int sy, int sx, int height,
  54                         int width);
  55         void    (*con_putc)(struct vc_data *vc, int c, int ypos, int xpos);
  56         void    (*con_putcs)(struct vc_data *vc, const unsigned short *s,
  57                         int count, int ypos, int xpos);
  58         void    (*con_cursor)(struct vc_data *vc, int mode);
  59         bool    (*con_scroll)(struct vc_data *vc, unsigned int top,
  60                         unsigned int bottom, enum con_scroll dir,
  61                         unsigned int lines);
  62         int     (*con_switch)(struct vc_data *vc);
  63         int     (*con_blank)(struct vc_data *vc, int blank, int mode_switch);
  64         int     (*con_font_set)(struct vc_data *vc, struct console_font *font,
  65                         unsigned int flags);
  66         int     (*con_font_get)(struct vc_data *vc, struct console_font *font);
  67         int     (*con_font_default)(struct vc_data *vc,
  68                         struct console_font *font, char *name);
  69         int     (*con_font_copy)(struct vc_data *vc, int con);
  70         int     (*con_resize)(struct vc_data *vc, unsigned int width,
  71                         unsigned int height, unsigned int user);
  72         void    (*con_set_palette)(struct vc_data *vc,
  73                         const unsigned char *table);
  74         void    (*con_scrolldelta)(struct vc_data *vc, int lines);
  75         int     (*con_set_origin)(struct vc_data *vc);
  76         void    (*con_save_screen)(struct vc_data *vc);
  77         u8      (*con_build_attr)(struct vc_data *vc, u8 color, u8 intensity,
  78                         u8 blink, u8 underline, u8 reverse, u8 italic);
  79         void    (*con_invert_region)(struct vc_data *vc, u16 *p, int count);
  80         u16    *(*con_screen_pos)(struct vc_data *vc, int offset);
  81         unsigned long (*con_getxy)(struct vc_data *vc, unsigned long position,
  82                         int *px, int *py);
  83         /*
  84          * Flush the video console driver's scrollback buffer
  85          */
  86         void    (*con_flush_scrollback)(struct vc_data *vc);
  87         /*
  88          * Prepare the console for the debugger.  This includes, but is not
  89          * limited to, unblanking the console, loading an appropriate
  90          * palette, and allowing debugger generated output.
  91          */
  92         int     (*con_debug_enter)(struct vc_data *vc);
  93         /*
  94          * Restore the console to its pre-debug state as closely as possible.
  95          */
  96         int     (*con_debug_leave)(struct vc_data *vc);
  97 };
  98 
  99 extern const struct consw *conswitchp;
 100 
 101 extern const struct consw dummy_con;    /* dummy console buffer */
 102 extern const struct consw vga_con;      /* VGA text console */
 103 extern const struct consw newport_con;  /* SGI Newport console  */
 104 extern const struct consw prom_con;     /* SPARC PROM console */
 105 
 106 int con_is_bound(const struct consw *csw);
 107 int do_unregister_con_driver(const struct consw *csw);
 108 int do_take_over_console(const struct consw *sw, int first, int last, int deflt);
 109 void give_up_console(const struct consw *sw);
 110 #ifdef CONFIG_HW_CONSOLE
 111 int con_debug_enter(struct vc_data *vc);
 112 int con_debug_leave(void);
 113 #else
 114 static inline int con_debug_enter(struct vc_data *vc)
 115 {
 116         return 0;
 117 }
 118 static inline int con_debug_leave(void)
 119 {
 120         return 0;
 121 }
 122 #endif
 123 
 124 /* cursor */
 125 #define CM_DRAW     (1)
 126 #define CM_ERASE    (2)
 127 #define CM_MOVE     (3)
 128 
 129 /*
 130  * The interface for a console, or any other device that wants to capture
 131  * console messages (printer driver?)
 132  *
 133  * If a console driver is marked CON_BOOT then it will be auto-unregistered
 134  * when the first real console is registered.  This is for early-printk drivers.
 135  */
 136 
 137 #define CON_PRINTBUFFER (1)
 138 #define CON_CONSDEV     (2) /* Last on the command line */
 139 #define CON_ENABLED     (4)
 140 #define CON_BOOT        (8)
 141 #define CON_ANYTIME     (16) /* Safe to call when cpu is offline */
 142 #define CON_BRL         (32) /* Used for a braille device */
 143 #define CON_EXTENDED    (64) /* Use the extended output format a la /dev/kmsg */
 144 
 145 struct console {
 146         char    name[16];
 147         void    (*write)(struct console *, const char *, unsigned);
 148         int     (*read)(struct console *, char *, unsigned);
 149         struct tty_driver *(*device)(struct console *, int *);
 150         void    (*unblank)(void);
 151         int     (*setup)(struct console *, char *);
 152         int     (*match)(struct console *, char *name, int idx, char *options);
 153         short   flags;
 154         short   index;
 155         int     cflag;
 156         void    *data;
 157         struct   console *next;
 158 };
 159 
 160 /*
 161  * for_each_console() allows you to iterate on each console
 162  */
 163 #define for_each_console(con) \
 164         for (con = console_drivers; con != NULL; con = con->next)
 165 
 166 extern int console_set_on_cmdline;
 167 extern struct console *early_console;
 168 
 169 enum con_flush_mode {
 170         CONSOLE_FLUSH_PENDING,
 171         CONSOLE_REPLAY_ALL,
 172 };
 173 
 174 extern int add_preferred_console(char *name, int idx, char *options);
 175 extern void register_console(struct console *);
 176 extern int unregister_console(struct console *);
 177 extern struct console *console_drivers;
 178 extern void console_lock(void);
 179 extern int console_trylock(void);
 180 extern void console_unlock(void);
 181 extern void console_conditional_schedule(void);
 182 extern void console_unblank(void);
 183 extern void console_flush_on_panic(enum con_flush_mode mode);
 184 extern struct tty_driver *console_device(int *);
 185 extern void console_stop(struct console *);
 186 extern void console_start(struct console *);
 187 extern int is_console_locked(void);
 188 extern int braille_register_console(struct console *, int index,
 189                 char *console_options, char *braille_options);
 190 extern int braille_unregister_console(struct console *);
 191 #ifdef CONFIG_TTY
 192 extern void console_sysfs_notify(void);
 193 #else
 194 static inline void console_sysfs_notify(void)
 195 { }
 196 #endif
 197 extern bool console_suspend_enabled;
 198 
 199 /* Suspend and resume console messages over PM events */
 200 extern void suspend_console(void);
 201 extern void resume_console(void);
 202 
 203 int mda_console_init(void);
 204 void prom_con_init(void);
 205 
 206 void vcs_make_sysfs(int index);
 207 void vcs_remove_sysfs(int index);
 208 
 209 /* Some debug stub to catch some of the obvious races in the VT code */
 210 #define WARN_CONSOLE_UNLOCKED()                                         \
 211         WARN_ON(!atomic_read(&ignore_console_lock_warning) &&           \
 212                 !is_console_locked() && !oops_in_progress)
 213 /*
 214  * Increment ignore_console_lock_warning if you need to quiet
 215  * WARN_CONSOLE_UNLOCKED() for debugging purposes.
 216  */
 217 extern atomic_t ignore_console_lock_warning;
 218 
 219 /* VESA Blanking Levels */
 220 #define VESA_NO_BLANKING        0
 221 #define VESA_VSYNC_SUSPEND      1
 222 #define VESA_HSYNC_SUSPEND      2
 223 #define VESA_POWERDOWN          3
 224 
 225 #ifdef CONFIG_VGA_CONSOLE
 226 extern bool vgacon_text_force(void);
 227 #else
 228 static inline bool vgacon_text_force(void) { return false; }
 229 #endif
 230 
 231 extern void console_init(void);
 232 
 233 /* For deferred console takeover */
 234 void dummycon_register_output_notifier(struct notifier_block *nb);
 235 void dummycon_unregister_output_notifier(struct notifier_block *nb);
 236 
 237 #endif /* _LINUX_CONSOLE_H */

/* [<][>][^][v][top][bottom][index][help] */