linux/include/linux/console_struct.h
<<
>>
Prefs
   1/*
   2 * console_struct.h
   3 *
   4 * Data structure describing single virtual console except for data
   5 * used by vt.c.
   6 *
   7 * Fields marked with [#] must be set by the low-level driver.
   8 * Fields marked with [!] can be changed by the low-level driver
   9 * to achieve effects such as fast scrolling by changing the origin.
  10 */
  11
  12#ifndef _LINUX_CONSOLE_STRUCT_H
  13#define _LINUX_CONSOLE_STRUCT_H
  14
  15#include <linux/wait.h>
  16#include <linux/vt.h>
  17#include <linux/workqueue.h>
  18
  19struct vt_struct;
  20
  21#define NPAR 16
  22
  23struct vc_data {
  24        struct tty_port port;                   /* Upper level data */
  25
  26        unsigned short  vc_num;                 /* Console number */
  27        unsigned int    vc_cols;                /* [#] Console size */
  28        unsigned int    vc_rows;
  29        unsigned int    vc_size_row;            /* Bytes per row */
  30        unsigned int    vc_scan_lines;          /* # of scan lines */
  31        unsigned long   vc_origin;              /* [!] Start of real screen */
  32        unsigned long   vc_scr_end;             /* [!] End of real screen */
  33        unsigned long   vc_visible_origin;      /* [!] Top of visible window */
  34        unsigned int    vc_top, vc_bottom;      /* Scrolling region */
  35        const struct consw *vc_sw;
  36        unsigned short  *vc_screenbuf;          /* In-memory character/attribute buffer */
  37        unsigned int    vc_screenbuf_size;
  38        unsigned char   vc_mode;                /* KD_TEXT, ... */
  39        /* attributes for all characters on screen */
  40        unsigned char   vc_attr;                /* Current attributes */
  41        unsigned char   vc_def_color;           /* Default colors */
  42        unsigned char   vc_color;               /* Foreground & background */
  43        unsigned char   vc_s_color;             /* Saved foreground & background */
  44        unsigned char   vc_ulcolor;             /* Color for underline mode */
  45        unsigned char   vc_itcolor;
  46        unsigned char   vc_halfcolor;           /* Color for half intensity mode */
  47        /* cursor */
  48        unsigned int    vc_cursor_type;
  49        unsigned short  vc_complement_mask;     /* [#] Xor mask for mouse pointer */
  50        unsigned short  vc_s_complement_mask;   /* Saved mouse pointer mask */
  51        unsigned int    vc_x, vc_y;             /* Cursor position */
  52        unsigned int    vc_saved_x, vc_saved_y;
  53        unsigned long   vc_pos;                 /* Cursor address */
  54        /* fonts */     
  55        unsigned short  vc_hi_font_mask;        /* [#] Attribute set for upper 256 chars of font or 0 if not supported */
  56        struct console_font vc_font;            /* Current VC font set */
  57        unsigned short  vc_video_erase_char;    /* Background erase character */
  58        /* VT terminal data */
  59        unsigned int    vc_state;               /* Escape sequence parser state */
  60        unsigned int    vc_npar,vc_par[NPAR];   /* Parameters of current escape sequence */
  61        /* data for manual vt switching */
  62        struct vt_mode  vt_mode;
  63        struct pid      *vt_pid;
  64        int             vt_newvt;
  65        wait_queue_head_t paste_wait;
  66        /* mode flags */
  67        unsigned int    vc_charset      : 1;    /* Character set G0 / G1 */
  68        unsigned int    vc_s_charset    : 1;    /* Saved character set */
  69        unsigned int    vc_disp_ctrl    : 1;    /* Display chars < 32? */
  70        unsigned int    vc_toggle_meta  : 1;    /* Toggle high bit? */
  71        unsigned int    vc_decscnm      : 1;    /* Screen Mode */
  72        unsigned int    vc_decom        : 1;    /* Origin Mode */
  73        unsigned int    vc_decawm       : 1;    /* Autowrap Mode */
  74        unsigned int    vc_deccm        : 1;    /* Cursor Visible */
  75        unsigned int    vc_decim        : 1;    /* Insert Mode */
  76        unsigned int    vc_deccolm      : 1;    /* 80/132 Column Mode */
  77        /* attribute flags */
  78        unsigned int    vc_intensity    : 2;    /* 0=half-bright, 1=normal, 2=bold */
  79        unsigned int    vc_italic:1;
  80        unsigned int    vc_underline    : 1;
  81        unsigned int    vc_blink        : 1;
  82        unsigned int    vc_reverse      : 1;
  83        unsigned int    vc_s_intensity  : 2;    /* saved rendition */
  84        unsigned int    vc_s_italic:1;
  85        unsigned int    vc_s_underline  : 1;
  86        unsigned int    vc_s_blink      : 1;
  87        unsigned int    vc_s_reverse    : 1;
  88        /* misc */
  89        unsigned int    vc_ques         : 1;
  90        unsigned int    vc_need_wrap    : 1;
  91        unsigned int    vc_can_do_color : 1;
  92        unsigned int    vc_report_mouse : 2;
  93        unsigned char   vc_utf          : 1;    /* Unicode UTF-8 encoding */
  94        unsigned char   vc_utf_count;
  95                 int    vc_utf_char;
  96        unsigned int    vc_tab_stop[8];         /* Tab stops. 256 columns. */
  97        unsigned char   vc_palette[16*3];       /* Colour palette for VGA+ */
  98        unsigned short * vc_translate;
  99        unsigned char   vc_G0_charset;
 100        unsigned char   vc_G1_charset;
 101        unsigned char   vc_saved_G0;
 102        unsigned char   vc_saved_G1;
 103        unsigned int    vc_resize_user;         /* resize request from user */
 104        unsigned int    vc_bell_pitch;          /* Console bell pitch */
 105        unsigned int    vc_bell_duration;       /* Console bell duration */
 106        struct vc_data **vc_display_fg;         /* [!] Ptr to var holding fg console for this display */
 107        unsigned long   vc_uni_pagedir;
 108        unsigned long   *vc_uni_pagedir_loc;  /* [!] Location of uni_pagedir variable for this console */
 109        bool vc_panic_force_write; /* when oops/panic this VC can accept forced output/blanking */
 110        /* additional information is in vt_kern.h */
 111};
 112
 113struct vc {
 114        struct vc_data *d;
 115        struct work_struct SAK_work;
 116
 117        /* might add  scrmem, vt_struct, kbd  at some time,
 118           to have everything in one place - the disadvantage
 119           would be that vc_cons etc can no longer be static */
 120};
 121
 122extern struct vc vc_cons [MAX_NR_CONSOLES];
 123extern void vc_SAK(struct work_struct *work);
 124
 125#define CUR_DEF         0
 126#define CUR_NONE        1
 127#define CUR_UNDERLINE   2
 128#define CUR_LOWER_THIRD 3
 129#define CUR_LOWER_HALF  4
 130#define CUR_TWO_THIRDS  5
 131#define CUR_BLOCK       6
 132#define CUR_HWMASK      0x0f
 133#define CUR_SWMASK      0xfff0
 134
 135#define CUR_DEFAULT CUR_UNDERLINE
 136
 137#define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp)
 138
 139#endif /* _LINUX_CONSOLE_STRUCT_H */
 140