The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/vt/vt.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2009, 2013 The FreeBSD Foundation
    5  *
    6  * This software was developed by Ed Schouten under sponsorship from the
    7  * FreeBSD Foundation.
    8  *
    9  * Portions of this software were developed by Oleksandr Rybalko
   10  * under sponsorship from the FreeBSD Foundation.
   11  *
   12  * Redistribution and use in source and binary forms, with or without
   13  * modification, are permitted provided that the following conditions
   14  * are met:
   15  * 1. Redistributions of source code must retain the above copyright
   16  *    notice, this list of conditions and the following disclaimer.
   17  * 2. Redistributions in binary form must reproduce the above copyright
   18  *    notice, this list of conditions and the following disclaimer in the
   19  *    documentation and/or other materials provided with the distribution.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31  * SUCH DAMAGE.
   32  *
   33  * $FreeBSD$
   34  */
   35 
   36 #ifndef _DEV_VT_VT_H_
   37 #define _DEV_VT_VT_H_
   38 
   39 #include <sys/param.h>
   40 #include <sys/_lock.h>
   41 #include <sys/_mutex.h>
   42 #include <sys/callout.h>
   43 #include <sys/condvar.h>
   44 #include <sys/conf.h>
   45 #include <sys/consio.h>
   46 #include <sys/kbio.h>
   47 #include <sys/mouse.h>
   48 #include <sys/terminal.h>
   49 #include <sys/sysctl.h>
   50 #include <sys/font.h>
   51 #include <sys/taskqueue.h>
   52 
   53 #include "opt_syscons.h"
   54 #include "opt_splash.h"
   55 
   56 #ifndef VT_MAXWINDOWS
   57 #ifdef  MAXCONS
   58 #define VT_MAXWINDOWS   MAXCONS
   59 #else
   60 #define VT_MAXWINDOWS   12
   61 #endif
   62 #endif
   63 
   64 #ifndef VT_ALT_TO_ESC_HACK
   65 #define VT_ALT_TO_ESC_HACK      1
   66 #endif
   67 
   68 #define VT_CONSWINDOW   0
   69 
   70 #if defined(SC_TWOBUTTON_MOUSE) || defined(VT_TWOBUTTON_MOUSE)
   71 #define VT_MOUSE_PASTEBUTTON    MOUSE_BUTTON3DOWN       /* right button */
   72 #define VT_MOUSE_EXTENDBUTTON   MOUSE_BUTTON2DOWN       /* not really used */
   73 #else
   74 #define VT_MOUSE_PASTEBUTTON    MOUSE_BUTTON2DOWN       /* middle button */
   75 #define VT_MOUSE_EXTENDBUTTON   MOUSE_BUTTON3DOWN       /* right button */
   76 #endif /* defined(SC_TWOBUTTON_MOUSE) || defined(VT_TWOBUTTON_MOUSE) */
   77 
   78 #define SC_DRIVER_NAME  "vt"
   79 #ifdef VT_DEBUG
   80 #define DPRINTF(_l, ...)        if (vt_debug > (_l)) printf( __VA_ARGS__ )
   81 #define VT_CONSOLECTL_DEBUG
   82 #define VT_SYSMOUSE_DEBUG
   83 #else
   84 #define DPRINTF(_l, ...)        do {} while (0)
   85 #endif
   86 #define ISSIGVALID(sig) ((sig) > 0 && (sig) < NSIG)
   87 
   88 #define VT_SYSCTL_INT(_name, _default, _descr)                          \
   89 int vt_##_name = (_default);                                            \
   90 SYSCTL_INT(_kern_vt, OID_AUTO, _name, CTLFLAG_RWTUN, &vt_##_name, 0, _descr)
   91 
   92 struct vt_driver;
   93 
   94 int vt_allocate(const struct vt_driver *, void *);
   95 int vt_deallocate(const struct vt_driver *, void *);
   96 
   97 typedef unsigned int    vt_axis_t;
   98 
   99 /*
  100  * List of locks
  101  * (d)  locked by vd_lock
  102  * (b)  locked by vb_lock
  103  * (G)  locked by Giant
  104  * (u)  unlocked, locked by higher levels
  105  * (c)  const until freeing
  106  * (?)  yet to be determined
  107  */
  108 
  109 /*
  110  * Per-device datastructure.
  111  */
  112 
  113 #ifndef SC_NO_CUTPASTE
  114 struct vt_mouse_cursor;
  115 #endif
  116 
  117 struct vt_pastebuf {
  118         term_char_t             *vpb_buf;       /* Copy-paste buffer. */
  119         unsigned int             vpb_bufsz;     /* Buffer size. */
  120         unsigned int             vpb_len;       /* Length of a last selection. */
  121 };
  122 
  123 struct vt_device {
  124         struct vt_window        *vd_windows[VT_MAXWINDOWS]; /* (c) Windows. */
  125         struct vt_window        *vd_curwindow;  /* (d) Current window. */
  126         struct vt_window        *vd_savedwindow;/* (?) Saved for suspend. */
  127         struct vt_window        *vd_grabwindow; /* (?) Saved before cngrab. */
  128         struct vt_pastebuf       vd_pastebuf;   /* (?) Copy/paste buf. */
  129         const struct vt_driver  *vd_driver;     /* (c) Graphics driver. */
  130         void                    *vd_softc;      /* (u) Driver data. */
  131         const struct vt_driver  *vd_prev_driver;/* (?) Previous driver. */
  132         void                    *vd_prev_softc; /* (?) Previous driver data. */
  133         device_t                 vd_video_dev;  /* (?) Video adapter. */
  134 #ifndef SC_NO_CUTPASTE
  135         struct vt_mouse_cursor  *vd_mcursor;    /* (?) Cursor bitmap. */
  136         term_color_t             vd_mcursor_fg; /* (?) Cursor fg color. */
  137         term_color_t             vd_mcursor_bg; /* (?) Cursor bg color. */
  138         vt_axis_t                vd_mx_drawn;   /* (?) Mouse X and Y      */
  139         vt_axis_t                vd_my_drawn;   /*     as of last redraw. */
  140         int                      vd_mshown;     /* (?) Mouse shown during */
  141 #endif                                          /*     last redrawn.      */
  142         uint16_t                 vd_mx;         /* (?) Current mouse X. */
  143         uint16_t                 vd_my;         /* (?) current mouse Y. */
  144         uint32_t                 vd_mstate;     /* (?) Mouse state. */
  145         vt_axis_t                vd_width;      /* (?) Screen width. */
  146         vt_axis_t                vd_height;     /* (?) Screen height. */
  147         size_t                   vd_transpose;  /* (?) Screen offset in FB */
  148         struct mtx               vd_lock;       /* Per-device lock. */
  149         struct cv                vd_winswitch;  /* (d) Window switch notify. */
  150         struct callout           vd_timer;      /* (d) Display timer. */
  151         volatile unsigned int    vd_timer_armed;/* (?) Display timer started.*/
  152         int                      vd_flags;      /* (d) Device flags. */
  153 #define VDF_TEXTMODE    0x01    /* Do text mode rendering. */
  154 #define VDF_SPLASH      0x02    /* Splash screen active. */
  155 #define VDF_ASYNC       0x04    /* vt_timer() running. */
  156 #define VDF_INVALID     0x08    /* Entire screen should be re-rendered. */
  157 #define VDF_DEAD        0x10    /* Early probing found nothing. */
  158 #define VDF_INITIALIZED 0x20    /* vtterm_cnprobe already done. */
  159 #define VDF_MOUSECURSOR 0x40    /* Mouse cursor visible. */
  160 #define VDF_QUIET_BELL  0x80    /* Disable bell. */
  161 #define VDF_SUSPENDED   0x100   /* Device has been suspended. */
  162 #define VDF_DOWNGRADE   0x8000  /* The driver is being downgraded. */
  163         struct keyboard         *vd_keyboard;   /* (G) Keyboard. */
  164         unsigned int             vd_kbstate;    /* (?) Device unit. */
  165         unsigned int             vd_unit;       /* (c) Device unit. */
  166         int                      vd_altbrk;     /* (?) Alt break seq. state */
  167         term_char_t             *vd_drawn;      /* (?) Most recent char drawn. */
  168         term_color_t            *vd_drawnfg;    /* (?) Most recent fg color drawn. */
  169         term_color_t            *vd_drawnbg;    /* (?) Most recent bg color drawn. */
  170 };
  171 
  172 #define VD_PASTEBUF(vd) ((vd)->vd_pastebuf.vpb_buf)
  173 #define VD_PASTEBUFSZ(vd)       ((vd)->vd_pastebuf.vpb_bufsz)
  174 #define VD_PASTEBUFLEN(vd)      ((vd)->vd_pastebuf.vpb_len)
  175 
  176 #define VT_LOCK(vd)     mtx_lock(&(vd)->vd_lock)
  177 #define VT_UNLOCK(vd)   mtx_unlock(&(vd)->vd_lock)
  178 #define VT_LOCK_ASSERT(vd, what)        mtx_assert(&(vd)->vd_lock, what)
  179 
  180 void vt_resume(struct vt_device *vd);
  181 void vt_resume_flush_timer(struct vt_window *vw, int ms);
  182 void vt_suspend(struct vt_device *vd);
  183 
  184 /*
  185  * Per-window terminal screen buffer.
  186  *
  187  * Because redrawing is performed asynchronously, the buffer keeps track
  188  * of a rectangle that needs to be redrawn (vb_dirtyrect).  Because this
  189  * approach seemed to cause suboptimal performance (when the top left
  190  * and the bottom right of the screen are modified), it also uses a set
  191  * of bitmasks to keep track of the rows and columns (mod 64) that have
  192  * been modified.
  193  */
  194 
  195 struct vt_buf {
  196         struct mtx               vb_lock;       /* Buffer lock. */
  197         struct terminal         *vb_terminal;
  198         term_pos_t               vb_scr_size;   /* (b) Screen dimensions. */
  199         int                      vb_flags;      /* (b) Flags. */
  200 #define VBF_CURSOR      0x1     /* Cursor visible. */
  201 #define VBF_STATIC      0x2     /* Buffer is statically allocated. */
  202 #define VBF_MTX_INIT    0x4     /* Mutex initialized. */
  203 #define VBF_SCROLL      0x8     /* scroll locked mode. */
  204 #define VBF_HISTORY_FULL 0x10   /* All rows filled. */
  205         unsigned int             vb_history_size;
  206         unsigned int             vb_roffset;    /* (b) History rows offset. */
  207         unsigned int             vb_curroffset; /* (b) Saved rows offset. */
  208         term_pos_t               vb_cursor;     /* (u) Cursor position. */
  209         term_pos_t               vb_mark_start; /* (b) Copy region start. */
  210         term_pos_t               vb_mark_end;   /* (b) Copy region end. */
  211         int                      vb_mark_last;  /* Last mouse event. */
  212         term_rect_t              vb_dirtyrect;  /* (b) Dirty rectangle. */
  213         term_char_t             *vb_buffer;     /* (u) Data buffer. */
  214         term_char_t             **vb_rows;      /* (u) Array of rows */
  215 };
  216 
  217 #ifdef SC_HISTORY_SIZE
  218 #define VBF_DEFAULT_HISTORY_SIZE        SC_HISTORY_SIZE
  219 #else
  220 #define VBF_DEFAULT_HISTORY_SIZE        500
  221 #endif
  222 
  223 void vtbuf_lock(struct vt_buf *);
  224 void vtbuf_unlock(struct vt_buf *);
  225 void vtbuf_copy(struct vt_buf *, const term_rect_t *, const term_pos_t *);
  226 void vtbuf_fill(struct vt_buf *, const term_rect_t *, term_char_t);
  227 void vtbuf_init_early(struct vt_buf *);
  228 void vtbuf_init(struct vt_buf *, const term_pos_t *);
  229 void vtbuf_grow(struct vt_buf *, const term_pos_t *, unsigned int);
  230 void vtbuf_putchar(struct vt_buf *, const term_pos_t *, term_char_t);
  231 void vtbuf_cursor_position(struct vt_buf *, const term_pos_t *);
  232 void vtbuf_scroll_mode(struct vt_buf *vb, int yes);
  233 void vtbuf_dirty(struct vt_buf *vb, const term_rect_t *area);
  234 void vtbuf_undirty(struct vt_buf *, term_rect_t *);
  235 void vtbuf_sethistory_size(struct vt_buf *, unsigned int);
  236 void vtbuf_clearhistory(struct vt_buf *);
  237 int vtbuf_iscursor(const struct vt_buf *vb, int row, int col);
  238 void vtbuf_cursor_visibility(struct vt_buf *, int);
  239 #ifndef SC_NO_CUTPASTE
  240 int vtbuf_set_mark(struct vt_buf *vb, int type, int col, int row);
  241 int vtbuf_get_marked_len(struct vt_buf *vb);
  242 void vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz, int mark);
  243 #endif
  244 
  245 #define VTB_MARK_NONE           0
  246 #define VTB_MARK_END            1
  247 #define VTB_MARK_START          2
  248 #define VTB_MARK_WORD           3
  249 #define VTB_MARK_ROW            4
  250 #define VTB_MARK_EXTEND         5
  251 #define VTB_MARK_MOVE           6
  252 
  253 #define VTBUF_SLCK_ENABLE(vb)   vtbuf_scroll_mode((vb), 1)
  254 #define VTBUF_SLCK_DISABLE(vb)  vtbuf_scroll_mode((vb), 0)
  255 
  256 #define VTBUF_MAX_HEIGHT(vb) \
  257         ((vb)->vb_history_size)
  258 #define VTBUF_GET_ROW(vb, r) \
  259         ((vb)->vb_rows[((vb)->vb_roffset + (r)) % VTBUF_MAX_HEIGHT(vb)])
  260 #define VTBUF_GET_FIELD(vb, r, c) \
  261         ((vb)->vb_rows[((vb)->vb_roffset + (r)) % VTBUF_MAX_HEIGHT(vb)][(c)])
  262 #define VTBUF_FIELD(vb, r, c) \
  263         ((vb)->vb_rows[((vb)->vb_curroffset + (r)) % VTBUF_MAX_HEIGHT(vb)][(c)])
  264 #define VTBUF_ISCURSOR(vb, r, c) \
  265         vtbuf_iscursor((vb), (r), (c))
  266 #define VTBUF_DIRTYROW(mask, row) \
  267         ((mask)->vbm_row & ((uint64_t)1 << ((row) % 64)))
  268 #define VTBUF_DIRTYCOL(mask, col) \
  269         ((mask)->vbm_col & ((uint64_t)1 << ((col) % 64)))
  270 #define VTBUF_SPACE_CHAR(attr)  (' ' | (attr))
  271 
  272 #define VHS_SET 0
  273 #define VHS_CUR 1
  274 #define VHS_END 2
  275 int vthistory_seek(struct vt_buf *, int offset, int whence);
  276 void vthistory_addlines(struct vt_buf *vb, int offset);
  277 void vthistory_getpos(const struct vt_buf *, unsigned int *offset);
  278 
  279 /*
  280  * Per-window datastructure.
  281  */
  282 
  283 struct vt_window {
  284         struct vt_device        *vw_device;     /* (c) Device. */
  285         struct terminal         *vw_terminal;   /* (c) Terminal. */
  286         struct vt_buf            vw_buf;        /* (u) Screen buffer. */
  287         struct vt_font          *vw_font;       /* (d) Graphical font. */
  288         term_rect_t              vw_draw_area;  /* (?) Drawable area. */
  289         unsigned int             vw_number;     /* (c) Window number. */
  290         int                      vw_kbdmode;    /* (?) Keyboard mode. */
  291         int                      vw_prev_kbdmode;/* (?) Previous mode. */
  292         int                      vw_kbdstate;   /* (?) Keyboard state. */
  293         int                      vw_grabbed;    /* (?) Grab count. */
  294         char                    *vw_kbdsq;      /* Escape sequence queue*/
  295         unsigned int             vw_flags;      /* (d) Per-window flags. */
  296         int                      vw_mouse_level;/* Mouse op mode. */
  297 #define VWF_BUSY        0x1     /* Busy reconfiguring device. */
  298 #define VWF_OPENED      0x2     /* TTY in use. */
  299 #define VWF_SCROLL      0x4     /* Keys influence scrollback. */
  300 #define VWF_CONSOLE     0x8     /* Kernel message console window. */
  301 #define VWF_VTYLOCK     0x10    /* Prevent window switch. */
  302 #define VWF_MOUSE_HIDE  0x20    /* Disable mouse events processing. */
  303 #define VWF_READY       0x40    /* Window fully initialized. */
  304 #define VWF_GRAPHICS    0x80    /* Window in graphics mode (KDSETMODE). */
  305 #define VWF_SWWAIT_REL  0x10000 /* Program wait for VT acquire is done. */
  306 #define VWF_SWWAIT_ACQ  0x20000 /* Program wait for VT release is done. */
  307         pid_t                    vw_pid;        /* Terminal holding process */
  308         struct proc             *vw_proc;
  309         struct vt_mode           vw_smode;      /* switch mode */
  310         struct timeout_task      vw_timeout_task_dead;
  311         struct vt_window        *vw_switch_to;
  312         int                      vw_bell_pitch; /* (?) Bell pitch */
  313         sbintime_t               vw_bell_duration; /* (?) Bell duration */
  314 };
  315 
  316 #define VT_AUTO         0               /* switching is automatic */
  317 #define VT_PROCESS      1               /* switching controlled by prog */
  318 #define VT_KERNEL       255             /* switching controlled in kernel */
  319 
  320 #define IS_VT_PROC_MODE(vw)     ((vw)->vw_smode.mode == VT_PROCESS)
  321 
  322 /*
  323  * Per-device driver routines.
  324  */
  325 
  326 typedef int vd_init_t(struct vt_device *vd);
  327 typedef int vd_probe_t(struct vt_device *vd);
  328 typedef void vd_fini_t(struct vt_device *vd, void *softc);
  329 typedef void vd_postswitch_t(struct vt_device *vd);
  330 typedef void vd_blank_t(struct vt_device *vd, term_color_t color);
  331 typedef void vd_bitblt_text_t(struct vt_device *vd, const struct vt_window *vw,
  332     const term_rect_t *area);
  333 typedef void vd_invalidate_text_t(struct vt_device *vd,
  334     const term_rect_t *area);
  335 typedef void vd_bitblt_bmp_t(struct vt_device *vd, const struct vt_window *vw,
  336     const uint8_t *pattern, const uint8_t *mask,
  337     unsigned int width, unsigned int height,
  338     unsigned int x, unsigned int y, term_color_t fg, term_color_t bg);
  339 typedef int vd_fb_ioctl_t(struct vt_device *, u_long, caddr_t, struct thread *);
  340 typedef int vd_fb_mmap_t(struct vt_device *, vm_ooffset_t, vm_paddr_t *, int,
  341     vm_memattr_t *);
  342 typedef void vd_drawrect_t(struct vt_device *, int, int, int, int, int,
  343     term_color_t);
  344 typedef void vd_setpixel_t(struct vt_device *, int, int, term_color_t);
  345 typedef void vd_suspend_t(struct vt_device *);
  346 typedef void vd_resume_t(struct vt_device *);
  347 
  348 struct vt_driver {
  349         char             vd_name[16];
  350         /* Console attachment. */
  351         vd_probe_t      *vd_probe;
  352         vd_init_t       *vd_init;
  353         vd_fini_t       *vd_fini;
  354 
  355         /* Drawing. */
  356         vd_blank_t      *vd_blank;
  357         vd_drawrect_t   *vd_drawrect;
  358         vd_setpixel_t   *vd_setpixel;
  359         vd_bitblt_text_t *vd_bitblt_text;
  360         vd_invalidate_text_t *vd_invalidate_text;
  361         vd_bitblt_bmp_t *vd_bitblt_bmp;
  362 
  363         /* Framebuffer ioctls, if present. */
  364         vd_fb_ioctl_t   *vd_fb_ioctl;
  365 
  366         /* Framebuffer mmap, if present. */
  367         vd_fb_mmap_t    *vd_fb_mmap;
  368 
  369         /* Update display setting on vt switch. */
  370         vd_postswitch_t *vd_postswitch;
  371 
  372         /* Suspend/resume handlers. */
  373         vd_suspend_t    *vd_suspend;
  374         vd_resume_t     *vd_resume;
  375 
  376         /* Priority to know which one can override */
  377         int             vd_priority;
  378 #define VD_PRIORITY_DUMB        10
  379 #define VD_PRIORITY_GENERIC     100
  380 #define VD_PRIORITY_SPECIFIC    1000
  381 };
  382 
  383 /*
  384  * Console device madness.
  385  *
  386  * Utility macro to make early vt(4) instances work.
  387  */
  388 
  389 extern struct vt_device vt_consdev;
  390 void vt_upgrade(struct vt_device *vd);
  391 
  392 #define PIXEL_WIDTH(w)  ((w) / 8)
  393 #define PIXEL_HEIGHT(h) ((h) / 16)
  394 
  395 #ifndef VT_FB_MAX_WIDTH
  396 #define VT_FB_MAX_WIDTH 4096
  397 #endif
  398 #ifndef VT_FB_MAX_HEIGHT
  399 #define VT_FB_MAX_HEIGHT        2400
  400 #endif
  401 
  402 /* name argument is not used yet. */
  403 #define VT_DRIVER_DECLARE(name, drv) DATA_SET(vt_drv_set, drv)
  404 
  405 #ifndef SC_NO_CUTPASTE
  406 struct vt_mouse_cursor {
  407         uint8_t map[64 * 64 / 8];
  408         uint8_t mask[64 * 64 / 8];
  409         uint8_t width;
  410         uint8_t height;
  411 };
  412 #endif
  413 
  414 const uint8_t   *vtfont_lookup(const struct vt_font *vf, term_char_t c);
  415 struct vt_font  *vtfont_ref(struct vt_font *vf);
  416 void             vtfont_unref(struct vt_font *vf);
  417 int              vtfont_load(vfnt_t *f, struct vt_font **ret);
  418 
  419 /* Sysmouse. */
  420 void sysmouse_process_event(mouse_info_t *mi);
  421 #ifndef SC_NO_CUTPASTE
  422 void vt_mouse_event(int type, int x, int y, int event, int cnt, int mlevel);
  423 void vt_mouse_state(int show);
  424 #endif
  425 #define VT_MOUSE_SHOW 1
  426 #define VT_MOUSE_HIDE 0
  427 
  428 /* Utilities. */
  429 void    vt_compute_drawable_area(struct vt_window *);
  430 void    vt_determine_colors(term_char_t c, int cursor,
  431             term_color_t *fg, term_color_t *bg);
  432 int     vt_is_cursor_in_area(const struct vt_device *vd,
  433             const term_rect_t *area);
  434 void    vt_termsize(struct vt_device *, struct vt_font *, term_pos_t *);
  435 void    vt_winsize(struct vt_device *, struct vt_font *, struct winsize *);
  436 
  437 /* Logos-on-boot. */
  438 #define VT_LOGOS_DRAW_BEASTIE           0
  439 #define VT_LOGOS_DRAW_ALT_BEASTIE       1
  440 #define VT_LOGOS_DRAW_ORB               2
  441 
  442 extern int vt_draw_logo_cpus;
  443 extern int vt_splash_cpu;
  444 extern int vt_splash_ncpu;
  445 extern int vt_splash_cpu_style;
  446 extern int vt_splash_cpu_duration;
  447 
  448 extern const unsigned int vt_logo_sprite_height;
  449 extern const unsigned int vt_logo_sprite_width;
  450 
  451 void vtterm_draw_cpu_logos(struct vt_device *);
  452 
  453 #endif /* !_DEV_VT_VT_H_ */

Cache object: e4d45ebbe02bbb0f9cf83cf59b275494


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.