Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 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
#define NPAR 16
13
 
14
struct vc_data {
15
        unsigned short  vc_num;                 /* Console number */
16
        unsigned int    vc_cols;                /* [#] Console size */
17
        unsigned int    vc_rows;
18
        unsigned int    vc_size_row;            /* Bytes per row */
19
        unsigned int    vc_scan_lines;          /* # of scan lines */
20
        unsigned long   vc_origin;              /* [!] Start of real screen */
21
        unsigned long   vc_scr_end;             /* [!] End of real screen */
22
        unsigned long   vc_visible_origin;      /* [!] Top of visible window */
23
        unsigned int    vc_top, vc_bottom;      /* Scrolling region */
24
        const struct consw *vc_sw;
25
        unsigned short  *vc_screenbuf;          /* In-memory character/attribute buffer */
26
        unsigned int    vc_screenbuf_size;
27
        /* attributes for all characters on screen */
28
        unsigned char   vc_attr;                /* Current attributes */
29
        unsigned char   vc_def_color;           /* Default colors */
30
        unsigned char   vc_color;               /* Foreground & background */
31
        unsigned char   vc_s_color;             /* Saved foreground & background */
32
        unsigned char   vc_ulcolor;             /* Color for underline mode */
33
        unsigned char   vc_halfcolor;           /* Color for half intensity mode */
34
        /* cursor */
35
        unsigned int    vc_cursor_type;
36
        unsigned short  vc_complement_mask;     /* [#] Xor mask for mouse pointer */
37
        unsigned short  vc_s_complement_mask;   /* Saved mouse pointer mask */
38
        unsigned int    vc_x, vc_y;             /* Cursor position */
39
        unsigned int    vc_saved_x, vc_saved_y;
40
        unsigned long   vc_pos;                 /* Cursor address */
41
        /* fonts */    
42
        unsigned short  vc_hi_font_mask;        /* [#] Attribute set for upper 256 chars of font or 0 if not supported */
43
        struct console_font_op vc_font;         /* Current VC font set */
44
        unsigned short  vc_video_erase_char;    /* Background erase character */
45
        /* VT terminal data */
46
        unsigned int    vc_state;               /* Escape sequence parser state */
47
        unsigned int    vc_npar,vc_par[NPAR];   /* Parameters of current escape sequence */
48
        struct tty_struct *vc_tty;              /* TTY we are attached to */
49
        /* mode flags */
50
        unsigned int    vc_charset      : 1;    /* Character set G0 / G1 */
51
        unsigned int    vc_s_charset    : 1;    /* Saved character set */
52
        unsigned int    vc_disp_ctrl    : 1;    /* Display chars < 32? */
53
        unsigned int    vc_toggle_meta  : 1;    /* Toggle high bit? */
54
        unsigned int    vc_decscnm      : 1;    /* Screen Mode */
55
        unsigned int    vc_decom        : 1;    /* Origin Mode */
56
        unsigned int    vc_decawm       : 1;    /* Autowrap Mode */
57
        unsigned int    vc_deccm        : 1;    /* Cursor Visible */
58
        unsigned int    vc_decim        : 1;    /* Insert Mode */
59
        unsigned int    vc_deccolm      : 1;    /* 80/132 Column Mode */
60
        /* attribute flags */
61
        unsigned int    vc_intensity    : 2;    /* 0=half-bright, 1=normal, 2=bold */
62
        unsigned int    vc_underline    : 1;
63
        unsigned int    vc_blink        : 1;
64
        unsigned int    vc_reverse      : 1;
65
        unsigned int    vc_s_intensity  : 2;    /* saved rendition */
66
        unsigned int    vc_s_underline  : 1;
67
        unsigned int    vc_s_blink      : 1;
68
        unsigned int    vc_s_reverse    : 1;
69
        /* misc */
70
        unsigned int    vc_ques         : 1;
71
        unsigned int    vc_need_wrap    : 1;
72
        unsigned int    vc_can_do_color : 1;
73
        unsigned int    vc_report_mouse : 2;
74
        unsigned int    vc_kmalloced    : 1;
75
        unsigned char   vc_utf          : 1;    /* Unicode UTF-8 encoding */
76
        unsigned char   vc_utf_count;
77
                 int    vc_utf_char;
78
        unsigned int    vc_tab_stop[8];         /* Tab stops. 256 columns. */
79
        unsigned char   vc_palette[16*3];       /* Colour palette for VGA+ */
80
        unsigned short * vc_translate;
81
        unsigned char   vc_G0_charset;
82
        unsigned char   vc_G1_charset;
83
        unsigned char   vc_saved_G0;
84
        unsigned char   vc_saved_G1;
85
        unsigned int    vc_bell_pitch;          /* Console bell pitch */
86
        unsigned int    vc_bell_duration;       /* Console bell duration */
87
        struct vc_data **vc_display_fg;         /* [!] Ptr to var holding fg console for this display */
88
        unsigned long   vc_uni_pagedir;
89
        unsigned long   *vc_uni_pagedir_loc;  /* [!] Location of uni_pagedir variable for this console */
90
        /* additional information is in vt_kern.h */
91
};
92
 
93
struct vc {
94
        struct vc_data *d;
95
 
96
        /* might add  scrmem, vt_struct, kbd  at some time,
97
           to have everything in one place - the disadvantage
98
           would be that vc_cons etc can no longer be static */
99
};
100
 
101
extern struct vc vc_cons [MAX_NR_CONSOLES];
102
 
103
#define CUR_DEF         0
104
#define CUR_NONE        1
105
#define CUR_UNDERLINE   2
106
#define CUR_LOWER_THIRD 3
107
#define CUR_LOWER_HALF  4
108
#define CUR_TWO_THIRDS  5
109
#define CUR_BLOCK       6
110
#define CUR_HWMASK      0x0f
111
#define CUR_SWMASK      0xfff0
112
 
113
#define CUR_DEFAULT CUR_UNDERLINE
114
 
115
#define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp)