Lines Matching refs:vd

302 vt_schedule_flush(struct vt_device *vd, int ms)  in vt_schedule_flush()  argument
309 callout_schedule(&vd->vd_timer, hz / (1000 / ms)); in vt_schedule_flush()
315 struct vt_device *vd = vw->vw_device; in vt_resume_flush_timer() local
317 if (vd->vd_curwindow != vw) in vt_resume_flush_timer()
320 if (!(vd->vd_flags & VDF_ASYNC) || in vt_resume_flush_timer()
321 !atomic_cmpset_int(&vd->vd_timer_armed, 0, 1)) in vt_resume_flush_timer()
324 vt_schedule_flush(vd, ms); in vt_resume_flush_timer()
328 vt_suspend_flush_timer(struct vt_device *vd) in vt_suspend_flush_timer() argument
335 VT_LOCK_ASSERT(vd, MA_OWNED); in vt_suspend_flush_timer()
337 if (!(vd->vd_flags & VDF_ASYNC) || in vt_suspend_flush_timer()
338 !atomic_cmpset_int(&vd->vd_timer_armed, 1, 0)) in vt_suspend_flush_timer()
341 callout_stop(&vd->vd_timer); in vt_suspend_flush_timer()
498 struct vt_device *vd; in vt_proc_window_switch() local
506 vd = vw->vw_device; in vt_proc_window_switch()
507 curvw = vd->vd_curwindow; in vt_proc_window_switch()
536 VT_LOCK(vd); in vt_proc_window_switch()
538 VT_UNLOCK(vd); in vt_proc_window_switch()
541 VT_UNLOCK(vd); in vt_proc_window_switch()
567 struct vt_device *vd = vw->vw_device; in vt_window_switch() local
568 struct vt_window *curvw = vd->vd_curwindow; in vt_window_switch()
590 vd->vd_curwindow = vw; in vt_window_switch()
591 vd->vd_flags |= VDF_INVALID; in vt_window_switch()
592 if (vd->vd_driver->vd_postswitch) in vt_window_switch()
593 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
598 VT_LOCK(vd); in vt_window_switch()
606 vd->vd_driver->vd_postswitch) in vt_window_switch()
607 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
609 VT_UNLOCK(vd); in vt_window_switch()
614 VT_UNLOCK(vd); in vt_window_switch()
618 vt_suspend_flush_timer(vd); in vt_window_switch()
620 vd->vd_curwindow = vw; in vt_window_switch()
621 vd->vd_flags |= VDF_INVALID; in vt_window_switch()
622 cv_broadcast(&vd->vd_winswitch); in vt_window_switch()
623 VT_UNLOCK(vd); in vt_window_switch()
625 if (vd->vd_driver->vd_postswitch) in vt_window_switch()
626 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
632 if ((kbd = vd->vd_keyboard) != NULL) { in vt_window_switch()
647 vt_termsize(struct vt_device *vd, struct vt_font *vf, term_pos_t *size) in vt_termsize() argument
650 size->tp_row = vd->vd_height; in vt_termsize()
653 size->tp_col = vd->vd_width; in vt_termsize()
663 vt_termrect(struct vt_device *vd, struct vt_font *vf, term_rect_t *rect) in vt_termrect() argument
670 rect->tr_end.tp_row = vd->vd_height; in vt_termrect()
671 rect->tr_end.tp_col = vd->vd_width; in vt_termrect()
685 vt_winsize(struct vt_device *vd, struct vt_font *vf, struct winsize *size) in vt_winsize() argument
688 size->ws_ypixel = vd->vd_height; in vt_winsize()
692 size->ws_col = size->ws_xpixel = vd->vd_width; in vt_winsize()
704 struct vt_device *vd; in vt_compute_drawable_area() local
708 vd = vw->vw_device; in vt_compute_drawable_area()
715 vw->vw_draw_area.tr_end.tp_col = vd->vd_width; in vt_compute_drawable_area()
716 vw->vw_draw_area.tr_end.tp_row = vd->vd_height; in vt_compute_drawable_area()
727 height = vd->vd_height; in vt_compute_drawable_area()
730 vw->vw_draw_area.tr_begin.tp_col = (vd->vd_width % vf->vf_width) / 2; in vt_compute_drawable_area()
735 rounddown(vd->vd_width, vf->vf_width); in vt_compute_drawable_area()
758 vt_machine_kbdevent(struct vt_device *vd, int c) in vt_machine_kbdevent() argument
771 vd->vd_kbstate &= ~ALKED; in vt_machine_kbdevent()
821 struct vt_device *vd; in vt_scrollmode_kbdevent() local
824 vd = vw->vw_device; in vt_scrollmode_kbdevent()
833 vw = vd->vd_windows[c - F_SCR]; in vt_scrollmode_kbdevent()
837 VT_LOCK(vd); in vt_scrollmode_kbdevent()
855 vt_termsize(vd, vw->vw_font, &size); in vt_scrollmode_kbdevent()
865 vt_termsize(vd, vw->vw_font, &size); in vt_scrollmode_kbdevent()
871 VT_UNLOCK(vd); in vt_scrollmode_kbdevent()
875 vt_processkey(keyboard_t *kbd, struct vt_device *vd, int c) in vt_processkey() argument
877 struct vt_window *vw = vd->vd_curwindow; in vt_processkey()
887 vd->vd_kbstate &= ~ALKED; in vt_processkey()
897 vd->vd_kbstate |= ALKED; in vt_processkey()
906 if (vt_machine_kbdevent(vd, c)) in vt_processkey()
919 vw = vd->vd_windows[c - F_SCR]; in vt_processkey()
928 vw = vd->vd_windows[c]; in vt_processkey()
934 vw = vd->vd_windows[c]; in vt_processkey()
939 VT_LOCK(vd); in vt_processkey()
950 VT_UNLOCK(vd); in vt_processkey()
996 if (vd->vd_kbstate & ALKED) { in vt_processkey()
1004 kdb_alt_break(c, &vd->vd_altbrk); in vt_processkey()
1016 struct vt_device *vd = arg; in vt_kbdevent() local
1024 vd->vd_keyboard = NULL; in vt_kbdevent()
1025 kbd_release(kbd, (void *)vd); in vt_kbdevent()
1033 vt_processkey(kbd, vd, c); in vt_kbdevent()
1039 vt_allocate_keyboard(struct vt_device *vd) in vt_allocate_keyboard() argument
1051 if (vd->vd_curwindow == &vt_conswindow) { in vt_allocate_keyboard()
1052 grabbed = vd->vd_curwindow->vw_grabbed; in vt_allocate_keyboard()
1054 vtterm_cnungrab_noswitch(vd, vd->vd_curwindow); in vt_allocate_keyboard()
1057 idx0 = kbd_allocate("kbdmux", -1, vd, vt_kbdevent, vd); in vt_allocate_keyboard()
1079 idx0 = kbd_allocate("*", -1, vd, vt_kbdevent, vd); in vt_allocate_keyboard()
1086 vd->vd_keyboard = k0; in vt_allocate_keyboard()
1088 vd->vd_keyboard->kb_index); in vt_allocate_keyboard()
1090 if (vd->vd_curwindow == &vt_conswindow) { in vt_allocate_keyboard()
1092 vtterm_cngrab_noswitch(vd, vd->vd_curwindow); in vt_allocate_keyboard()
1123 struct vt_device *vd = vw->vw_device; in vtterm_bell() local
1125 vtterm_devctl(vt_enable_bell, vd->vd_flags & VDF_QUIET_BELL, in vtterm_bell()
1131 if (vd->vd_flags & VDF_QUIET_BELL) in vtterm_bell()
1154 struct vt_device *vd = vw->vw_device; in vtterm_beep() local
1165 vtterm_devctl(vt_enable_bell, vd->vd_flags & VDF_QUIET_BELL, in vtterm_beep()
1267 vt_is_cursor_in_area(const struct vt_device *vd, const term_rect_t *area) in vt_is_cursor_in_area() argument
1275 mx = vd->vd_mx_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_col; in vt_is_cursor_in_area()
1276 my = vd->vd_my_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_row; in vt_is_cursor_in_area()
1279 mx + vd->vd_mcursor->width <= area->tr_begin.tp_col || in vt_is_cursor_in_area()
1281 my + vd->vd_mcursor->height <= area->tr_begin.tp_row) in vt_is_cursor_in_area()
1287 vt_mark_mouse_position_as_dirty(struct vt_device *vd, int locked) in vt_mark_mouse_position_as_dirty() argument
1294 vw = vd->vd_curwindow; in vt_mark_mouse_position_as_dirty()
1297 x = vd->vd_mx_drawn; in vt_mark_mouse_position_as_dirty()
1298 y = vd->vd_my_drawn; in vt_mark_mouse_position_as_dirty()
1304 ((x + vd->vd_mcursor->width) / vf->vf_width) + 1; in vt_mark_mouse_position_as_dirty()
1306 ((y + vd->vd_mcursor->height) / vf->vf_height) + 1; in vt_mark_mouse_position_as_dirty()
1322 if (vd->vd_driver->vd_invalidate_text) in vt_mark_mouse_position_as_dirty()
1323 vd->vd_driver->vd_invalidate_text(vd, &area); in vt_mark_mouse_position_as_dirty()
1331 vt_set_border(struct vt_device *vd, const term_rect_t *area, in vt_set_border() argument
1334 vd_drawrect_t *drawrect = vd->vd_driver->vd_drawrect; in vt_set_border()
1341 drawrect(vd, 0, 0, vd->vd_width - 1, in vt_set_border()
1346 drawrect(vd, 0, area->tr_begin.tp_row, in vt_set_border()
1350 if (area->tr_end.tp_col < vd->vd_width) in vt_set_border()
1351 drawrect(vd, area->tr_end.tp_col, area->tr_begin.tp_row, in vt_set_border()
1352 vd->vd_width - 1, area->tr_end.tp_row - 1, 1, c); in vt_set_border()
1355 if (area->tr_end.tp_row < vd->vd_height) in vt_set_border()
1356 drawrect(vd, 0, area->tr_end.tp_row, vd->vd_width - 1, in vt_set_border()
1357 vd->vd_height - 1, 1, c); in vt_set_border()
1361 vt_flush_to_buffer(struct vt_device *vd, in vt_flush_to_buffer() argument
1381 if (vd->vd_drawn && (vd->vd_drawn[z] == c) && in vt_flush_to_buffer()
1382 vd->vd_drawnfg && (vd->vd_drawnfg[z] == fg) && in vt_flush_to_buffer()
1383 vd->vd_drawnbg && (vd->vd_drawnbg[z] == bg)) { in vt_flush_to_buffer()
1384 vd->vd_pos_to_flush[z] = false; in vt_flush_to_buffer()
1388 vd->vd_pos_to_flush[z] = true; in vt_flush_to_buffer()
1390 if (vd->vd_drawn) in vt_flush_to_buffer()
1391 vd->vd_drawn[z] = c; in vt_flush_to_buffer()
1392 if (vd->vd_drawnfg) in vt_flush_to_buffer()
1393 vd->vd_drawnfg[z] = fg; in vt_flush_to_buffer()
1394 if (vd->vd_drawnbg) in vt_flush_to_buffer()
1395 vd->vd_drawnbg[z] = bg; in vt_flush_to_buffer()
1401 vt_bitblt_buffer(struct vt_device *vd, const struct vt_window *vw, in vt_bitblt_buffer() argument
1425 if (!vd->vd_pos_to_flush[z]) in vt_bitblt_buffer()
1428 c = vd->vd_drawn[z]; in vt_bitblt_buffer()
1429 fg = vd->vd_drawnfg[z]; in vt_bitblt_buffer()
1430 bg = vd->vd_drawnbg[z]; in vt_bitblt_buffer()
1433 vd->vd_driver->vd_bitblt_bmp(vd, vw, in vt_bitblt_buffer()
1440 if (!vd->vd_mshown) in vt_bitblt_buffer()
1450 if (vt_is_cursor_in_area(vd, &drawn_area)) { in vt_bitblt_buffer()
1451 vd->vd_driver->vd_bitblt_bmp(vd, vw, in vt_bitblt_buffer()
1452 vd->vd_mcursor->map, vd->vd_mcursor->mask, in vt_bitblt_buffer()
1453 vd->vd_mcursor->width, vd->vd_mcursor->height, in vt_bitblt_buffer()
1454 vd->vd_mx_drawn + vw->vw_draw_area.tr_begin.tp_col, in vt_bitblt_buffer()
1455 vd->vd_my_drawn + vw->vw_draw_area.tr_begin.tp_row, in vt_bitblt_buffer()
1456 vd->vd_mcursor_fg, vd->vd_mcursor_bg); in vt_bitblt_buffer()
1462 vt_draw_decorations(struct vt_device *vd) in vt_draw_decorations() argument
1467 vw = vd->vd_curwindow; in vt_draw_decorations()
1470 vt_set_border(vd, &vw->vw_draw_area, a->ta_bgcolor); in vt_draw_decorations()
1473 vtterm_draw_cpu_logos(vd); in vt_draw_decorations()
1477 vt_flush(struct vt_device *vd) in vt_flush() argument
1490 vw = vd->vd_curwindow; in vt_flush()
1494 if (vd->vd_flags & VDF_SPLASH || vw->vw_flags & VWF_BUSY) in vt_flush()
1498 if (((vd->vd_flags & VDF_TEXTMODE) == 0) && (vf == NULL)) in vt_flush()
1501 VT_FLUSH_LOCK(vd); in vt_flush()
1507 cursor_was_shown = vd->vd_mshown; in vt_flush()
1508 cursor_moved = (vd->vd_mx != vd->vd_mx_drawn || in vt_flush()
1509 vd->vd_my != vd->vd_my_drawn); in vt_flush()
1512 if ((vd->vd_flags & VDF_MOUSECURSOR) && /* Mouse support enabled. */ in vt_flush()
1515 vd->vd_mshown = 1; in vt_flush()
1517 vd->vd_mshown = 0; in vt_flush()
1524 if (cursor_was_shown != vd->vd_mshown || in vt_flush()
1525 (vd->vd_mshown && cursor_moved)) in vt_flush()
1526 vt_mark_mouse_position_as_dirty(vd, true); in vt_flush()
1533 vd->vd_mx_drawn = vd->vd_mx; in vt_flush()
1534 vd->vd_my_drawn = vd->vd_my; in vt_flush()
1540 if (vd->vd_mshown && cursor_moved) in vt_flush()
1541 vt_mark_mouse_position_as_dirty(vd, true); in vt_flush()
1548 if (vd->vd_flags & (VDF_INVALID | VDF_SUSPENDED)) { in vt_flush()
1550 vd->vd_flags &= ~VDF_INVALID; in vt_flush()
1552 vt_termrect(vd, vf, &tarea); in vt_flush()
1553 if (vd->vd_driver->vd_invalidate_text) in vt_flush()
1554 vd->vd_driver->vd_invalidate_text(vd, &tarea); in vt_flush()
1558 if (vd->vd_driver->vd_bitblt_after_vtbuf_unlock) { in vt_flush()
1567 vt_flush_to_buffer(vd, vw, &tarea); in vt_flush()
1569 vt_bitblt_buffer(vd, vw, &tarea); in vt_flush()
1572 vt_draw_decorations(vd); in vt_flush()
1585 vd->vd_driver->vd_bitblt_text(vd, vw, &tarea); in vt_flush()
1588 vt_draw_decorations(vd); in vt_flush()
1594 VT_FLUSH_UNLOCK(vd); in vt_flush()
1602 VT_FLUSH_UNLOCK(vd); in vt_flush()
1610 struct vt_device *vd; in vt_timer() local
1613 vd = arg; in vt_timer()
1615 changed = vt_flush(vd); in vt_timer()
1619 vt_schedule_flush(vd, 0); in vt_timer()
1621 vd->vd_timer_armed = 0; in vt_timer()
1651 struct vt_device *vd = vw->vw_device; in vtterm_done() local
1655 if (vd->vd_curwindow != vw) { in vtterm_done()
1656 vd->vd_curwindow = vw; in vtterm_done()
1657 vd->vd_flags |= VDF_INVALID; in vtterm_done()
1658 if (vd->vd_driver->vd_postswitch) in vtterm_done()
1659 vd->vd_driver->vd_postswitch(vd); in vtterm_done()
1661 vd->vd_flags &= ~VDF_SPLASH; in vtterm_done()
1662 vt_flush(vd); in vtterm_done()
1667 vt_flush(vd); in vtterm_done()
1669 } else if (!(vd->vd_flags & VDF_ASYNC)) { in vtterm_done()
1670 vt_flush(vd); in vtterm_done()
1676 vtterm_splash(struct vt_device *vd) in vtterm_splash() argument
1683 if (!(vd->vd_flags & VDF_TEXTMODE) && (boothowto & RB_MUTE)) { in vtterm_splash()
1685 top = (vd->vd_height - vt_logo_height) / 2; in vtterm_splash()
1686 left = (vd->vd_width - vt_logo_width) / 2; in vtterm_splash()
1687 vd->vd_driver->vd_bitblt_bmp(vd, vd->vd_curwindow, in vtterm_splash()
1695 top = (vd->vd_height - si->si_height) / 2; in vtterm_splash()
1696 left = (vd->vd_width - si->si_width) / 2; in vtterm_splash()
1697 vd->vd_driver->vd_bitblt_argb(vd, vd->vd_curwindow, in vtterm_splash()
1701 vd->vd_flags |= VDF_SPLASH; in vtterm_splash()
1835 struct vt_device *vd = vw->vw_device; in vtterm_cnprobe() local
1842 if (vd->vd_flags & VDF_INITIALIZED) in vtterm_cnprobe()
1850 if (vtd->vd_probe(vd) == CN_DEAD) in vtterm_cnprobe()
1858 vd->vd_flags |= VDF_DEAD; in vtterm_cnprobe()
1860 vd->vd_driver = vtdbest; in vtterm_cnprobe()
1861 cp->cn_pri = vd->vd_driver->vd_init(vd); in vtterm_cnprobe()
1866 vd->vd_flags |= VDF_DEAD; in vtterm_cnprobe()
1872 vd->vd_unit = atomic_fetchadd_int(&vt_unit, 1); in vtterm_cnprobe()
1873 vd->vd_windows[VT_CONSWINDOW] = vw; in vtterm_cnprobe()
1879 if ((vd->vd_flags & VDF_TEXTMODE) == 0) { in vtterm_cnprobe()
1889 if (vd->vd_width != 0 && vd->vd_height != 0) in vtterm_cnprobe()
1890 vt_termsize(vd, vw->vw_font, &vw->vw_buf.vb_scr_size); in vtterm_cnprobe()
1895 vt_winsize(vd, vw->vw_font, &wsz); in vtterm_cnprobe()
1902 vtterm_splash(vd); in vtterm_cnprobe()
1904 vd->vd_flags |= VDF_INITIALIZED; in vtterm_cnprobe()
1912 struct vt_device *vd = vw->vw_device; in vtterm_cngetc() local
1920 if (vd->vd_flags & VDF_SPLASH) { in vtterm_cngetc()
1922 vd->vd_flags &= ~VDF_SPLASH; in vtterm_cngetc()
1924 vd->vd_flags |= VDF_INVALID; in vtterm_cngetc()
1925 vt_flush(vd); in vtterm_cngetc()
1929 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cngetc()
1945 vt_flush(vd); in vtterm_cngetc()
1981 vt_flush(vd); in vtterm_cngetc()
2001 vtterm_cngrab_noswitch(struct vt_device *vd, struct vt_window *vw) in vtterm_cngrab_noswitch() argument
2008 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cngrab_noswitch()
2027 vtterm_cnungrab_noswitch(struct vt_device *vd, struct vt_window *vw) in vtterm_cnungrab_noswitch() argument
2034 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cnungrab_noswitch()
2048 struct vt_device *vd; in vtterm_cngrab() local
2052 vd = vw->vw_device; in vtterm_cngrab()
2055 if (vd->vd_grabwindow == NULL) in vtterm_cngrab()
2056 vd->vd_grabwindow = vd->vd_curwindow; in vtterm_cngrab()
2061 vtterm_cngrab_noswitch(vd, vw); in vtterm_cngrab()
2067 struct vt_device *vd; in vtterm_cnungrab() local
2071 vd = vw->vw_device; in vtterm_cnungrab()
2073 MPASS(vd->vd_grabwindow != NULL); in vtterm_cnungrab()
2074 if (vtterm_cnungrab_noswitch(vd, vw) != 0) in vtterm_cnungrab()
2085 grabwindow = vd->vd_grabwindow; in vtterm_cnungrab()
2086 vd->vd_grabwindow = NULL; in vtterm_cnungrab()
2096 struct vt_device *vd = vw->vw_device; in vtterm_opened() local
2098 VT_LOCK(vd); in vtterm_opened()
2099 vd->vd_flags &= ~VDF_SPLASH; in vtterm_opened()
2106 VT_UNLOCK(vd); in vtterm_opened()
2112 struct vt_device *vd = vw->vw_device; in vt_change_font() local
2130 VT_LOCK(vd); in vt_change_font()
2133 VT_UNLOCK(vd); in vt_change_font()
2137 VT_UNLOCK(vd); in vt_change_font()
2139 vt_termsize(vd, vf, &size); in vt_change_font()
2140 vt_winsize(vd, vf, &wsz); in vt_change_font()
2150 VT_LOCK(vd); in vt_change_font()
2165 vd->vd_mx = min(vd->vd_mx, in vt_change_font()
2168 vd->vd_my = min(vd->vd_my, in vt_change_font()
2173 if (vd->vd_curwindow == vw) { in vt_change_font()
2174 vd->vd_flags |= VDF_INVALID; in vt_change_font()
2178 VT_UNLOCK(vd); in vt_change_font()
2271 vt_mouse_terminput_button(struct vt_device *vd, int button) in vt_mouse_terminput_button() argument
2278 vw = vd->vd_curwindow; in vt_mouse_terminput_button()
2282 x = vd->vd_mx / vf->vf_width; in vt_mouse_terminput_button()
2283 y = vd->vd_my / vf->vf_height; in vt_mouse_terminput_button()
2297 vt_mouse_terminput(struct vt_device *vd, int type, int x, int y, int event, in vt_mouse_terminput() argument
2306 vt_mouse_terminput_button(vd, 0); in vt_mouse_terminput()
2308 vt_mouse_terminput_button(vd, 1); in vt_mouse_terminput()
2310 vt_mouse_terminput_button(vd, 2); in vt_mouse_terminput()
2313 vt_mouse_terminput_button(vd, 3); in vt_mouse_terminput()
2320 sc_mouse_input_button(vd, 64); in vt_mouse_terminput()
2323 sc_mouse_input_button(vd, 65); in vt_mouse_terminput()
2350 struct vt_device *vd; in vt_mouse_event() local
2356 vd = main_vd; in vt_mouse_event()
2357 vw = vd->vd_curwindow; in vt_mouse_event()
2377 vt_mouse_terminput(vd, type, x, y, event, cnt); in vt_mouse_event()
2383 x += vd->vd_mx; in vt_mouse_event()
2384 y += vd->vd_my; in vt_mouse_event()
2386 vt_termsize(vd, vf, &size); in vt_mouse_event()
2394 vd->vd_mx = x; in vt_mouse_event()
2395 vd->vd_my = y; in vt_mouse_event()
2396 if (vd->vd_mstate & (MOUSE_BUTTON1DOWN | VT_MOUSE_EXTENDBUTTON)) in vt_mouse_event()
2398 vd->vd_mx / vf->vf_width, in vt_mouse_event()
2399 vd->vd_my / vf->vf_height); in vt_mouse_event()
2435 vd->vd_mx / vf->vf_width, in vt_mouse_event()
2436 vd->vd_my / vf->vf_height); in vt_mouse_event()
2443 if (!(vd->vd_mstate & MOUSE_BUTTON1DOWN)) in vt_mouse_event()
2459 vd->vd_mstate |= event; in vt_mouse_event()
2461 vd->vd_mstate &= ~event; in vt_mouse_event()
2463 if (vtbuf_set_mark(&vw->vw_buf, mark, vd->vd_mx / vf->vf_width, in vt_mouse_event()
2464 vd->vd_my / vf->vf_height) == 1) { in vt_mouse_event()
2488 if (len > VD_PASTEBUFSZ(vd)) { in vt_mouse_event()
2489 VD_PASTEBUF(vd) = realloc(VD_PASTEBUF(vd), len, M_VT, in vt_mouse_event()
2492 VD_PASTEBUFSZ(vd) = len; in vt_mouse_event()
2495 vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), len, mark); in vt_mouse_event()
2497 VD_PASTEBUFLEN(vd) = len; in vt_mouse_event()
2506 struct vt_device *vd; in vt_mouse_state() local
2509 vd = main_vd; in vt_mouse_state()
2510 vw = vd->vd_curwindow; in vt_mouse_state()
2522 vt_mark_mouse_position_as_dirty(vd, false); in vt_mouse_state()
2532 struct vt_device *vd = vw->vw_device; in vtterm_mmap() local
2534 if (vd->vd_driver->vd_fb_mmap) in vtterm_mmap()
2535 return (vd->vd_driver->vd_fb_mmap(vd, offset, paddr, nprot, in vtterm_mmap()
2546 struct vt_device *vd = vw->vw_device; in vtterm_ioctl() local
2625 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2641 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2643 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2666 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2668 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2678 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2680 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2703 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2705 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2719 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2721 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2744 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2746 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2762 if (vd->vd_driver->vd_fb_ioctl) in vtterm_ioctl()
2763 return (vd->vd_driver->vd_fb_ioctl(vd, cmd, data, td)); in vtterm_ioctl()
2782 VT_LOCK(vd); in vtterm_ioctl()
2783 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2784 vd->vd_flags |= VDF_INVALID; in vtterm_ioctl()
2787 VT_UNLOCK(vd); in vtterm_ioctl()
2795 vd->vd_flags |= VDF_QUIET_BELL; in vtterm_ioctl()
2797 vd->vd_flags &= ~VDF_QUIET_BELL; in vtterm_ioctl()
2804 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2806 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2811 vi->m_num = vd->vd_curwindow->vw_number + 1; in vtterm_ioctl()
2832 if (vd->vd_flags & VDF_MOUSECURSOR) { in vtterm_ioctl()
2833 vd->vd_flags &= ~VDF_MOUSECURSOR; in vtterm_ioctl()
2840 if (!(vd->vd_flags & VDF_MOUSECURSOR)) { in vtterm_ioctl()
2841 vd->vd_flags |= VDF_MOUSECURSOR; in vtterm_ioctl()
2842 vd->vd_mx = vd->vd_width / 2; in vtterm_ioctl()
2843 vd->vd_my = vd->vd_height / 2; in vtterm_ioctl()
2856 if (vd->vd_flags & VDF_TEXTMODE) in vtterm_ioctl()
2925 if (vd->vd_keyboard == NULL || in vtterm_ioctl()
2926 vd->vd_keyboard->kb_index != *(int *)data) { in vtterm_ioctl()
2933 (void *)vd, vt_kbdevent, vd); in vtterm_ioctl()
2935 if ((kbd = vd->vd_keyboard) != NULL) { in vtterm_ioctl()
2936 vt_save_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2937 kbd_release(kbd, (void *)vd); in vtterm_ioctl()
2939 kbd = vd->vd_keyboard = kbd_get_keyboard(i); in vtterm_ioctl()
2941 vt_update_kbd_mode(vd->vd_curwindow, kbd); in vtterm_ioctl()
2942 vt_update_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2952 if ((kbd = vd->vd_keyboard) != NULL) { in vtterm_ioctl()
2953 vt_save_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2954 error = kbd_release(kbd, (void *)vd); in vtterm_ioctl()
2956 vd->vd_keyboard = NULL; in vtterm_ioctl()
2968 return (vt_proc_window_switch(vd->vd_windows[win])); in vtterm_ioctl()
2971 *(int *)data = vd->vd_curwindow->vw_number + 1; in vtterm_ioctl()
2986 VT_LOCK(vd); in vtterm_ioctl()
2988 vw = vd->vd_windows[i]; in vtterm_ioctl()
2993 VT_UNLOCK(vd); in vtterm_ioctl()
2997 VT_UNLOCK(vd); in vtterm_ioctl()
3008 vw = vd->vd_windows[idx - 1]; in vtterm_ioctl()
3010 VT_LOCK(vd); in vtterm_ioctl()
3011 while (vd->vd_curwindow != vw && error == 0) in vtterm_ioctl()
3012 error = cv_wait_sig(&vd->vd_winswitch, &vd->vd_lock); in vtterm_ioctl()
3013 VT_UNLOCK(vd); in vtterm_ioctl()
3076 if ((vw != vd->vd_curwindow) || (vw->vw_smode.mode != in vtterm_ioctl()
3116 vt_allocate_window(struct vt_device *vd, unsigned int window) in vt_allocate_window() argument
3124 vw->vw_device = vd; in vt_allocate_window()
3128 if ((vd->vd_flags & VDF_TEXTMODE) == 0) { in vt_allocate_window()
3133 vt_termsize(vd, vw->vw_font, &size); in vt_allocate_window()
3134 vt_winsize(vd, vw->vw_font, &wsz); in vt_allocate_window()
3140 vd->vd_windows[window] = vw; in vt_allocate_window()
3147 vt_upgrade(struct vt_device *vd) in vt_upgrade() argument
3159 vw = vd->vd_windows[i]; in vt_upgrade()
3162 vw = vt_allocate_window(vd, i); in vt_upgrade()
3175 VT_LOCK(vd); in vt_upgrade()
3176 if (vd->vd_curwindow == NULL) in vt_upgrade()
3177 vd->vd_curwindow = vd->vd_windows[VT_CONSWINDOW]; in vt_upgrade()
3180 if (!(vd->vd_flags & VDF_ASYNC)) { in vt_upgrade()
3182 vt_allocate_keyboard(vd); in vt_upgrade()
3185 callout_init_mtx(&vd->vd_timer, &vd->vd_lock, 0); in vt_upgrade()
3195 atomic_add_acq_int(&vd->vd_timer_armed, 1); in vt_upgrade()
3196 vd->vd_flags |= VDF_ASYNC; in vt_upgrade()
3197 callout_reset(&vd->vd_timer, hz / VT_TIMERFREQ, vt_timer, vd); in vt_upgrade()
3201 VT_UNLOCK(vd); in vt_upgrade()
3204 vt_resize(vd); in vt_upgrade()
3209 vd, EVENTHANDLER_PRI_ANY); in vt_upgrade()
3210 EVENTHANDLER_REGISTER(power_resume, vt_resume_handler, vd, in vt_upgrade()
3216 vt_resize(struct vt_device *vd) in vt_resize() argument
3222 vw = vd->vd_windows[i]; in vt_resize()
3223 VT_LOCK(vd); in vt_resize()
3225 if (!(vd->vd_flags & VDF_TEXTMODE) && vw->vw_font == NULL) in vt_resize()
3227 VT_UNLOCK(vd); in vt_resize()
3240 struct vt_device *vd; in vt_replace_backend() local
3242 vd = main_vd; in vt_replace_backend()
3244 if (vd->vd_flags & VDF_ASYNC) { in vt_replace_backend()
3246 VT_LOCK(vd); in vt_replace_backend()
3247 vt_suspend_flush_timer(vd); in vt_replace_backend()
3248 VT_UNLOCK(vd); in vt_replace_backend()
3253 terminal_mute(vd->vd_curwindow->vw_terminal, 1); in vt_replace_backend()
3260 VT_LOCK(vd); in vt_replace_backend()
3261 vd->vd_flags &= ~VDF_TEXTMODE; in vt_replace_backend()
3269 vd->vd_prev_driver = vd->vd_driver; in vt_replace_backend()
3270 vd->vd_prev_softc = vd->vd_softc; in vt_replace_backend()
3271 vd->vd_driver = drv; in vt_replace_backend()
3272 vd->vd_softc = softc; in vt_replace_backend()
3274 vd->vd_driver->vd_init(vd); in vt_replace_backend()
3275 } else if (vd->vd_prev_driver != NULL && vd->vd_prev_softc != NULL) { in vt_replace_backend()
3283 old_drv = vd->vd_driver; in vt_replace_backend()
3284 old_softc = vd->vd_softc; in vt_replace_backend()
3286 vd->vd_driver = vd->vd_prev_driver; in vt_replace_backend()
3287 vd->vd_softc = vd->vd_prev_softc; in vt_replace_backend()
3288 vd->vd_prev_driver = NULL; in vt_replace_backend()
3289 vd->vd_prev_softc = NULL; in vt_replace_backend()
3291 vd->vd_flags |= VDF_DOWNGRADE; in vt_replace_backend()
3293 vd->vd_driver->vd_init(vd); in vt_replace_backend()
3296 old_drv->vd_fini(vd, old_softc); in vt_replace_backend()
3298 vd->vd_flags &= ~VDF_DOWNGRADE; in vt_replace_backend()
3301 VT_UNLOCK(vd); in vt_replace_backend()
3304 vt_upgrade(vd); in vt_replace_backend()
3310 if (vd->vd_driver->vd_postswitch) in vt_replace_backend()
3311 vd->vd_driver->vd_postswitch(vd); in vt_replace_backend()
3314 if (vd->vd_flags & VDF_SPLASH) in vt_replace_backend()
3315 vtterm_splash(vd); in vt_replace_backend()
3318 if (vd->vd_flags & VDF_ASYNC) { in vt_replace_backend()
3320 terminal_mute(vd->vd_curwindow->vw_terminal, 0); in vt_replace_backend()
3322 vt_resume_flush_timer(vd->vd_curwindow, 0); in vt_replace_backend()
3329 termcn_cnregister(vd->vd_windows[VT_CONSWINDOW]->vw_terminal); in vt_replace_backend()
3335 struct vt_device *vd; in vt_suspend_handler() local
3337 vd = priv; in vt_suspend_handler()
3338 vd->vd_flags |= VDF_SUSPENDED; in vt_suspend_handler()
3339 if (vd->vd_driver != NULL && vd->vd_driver->vd_suspend != NULL) in vt_suspend_handler()
3340 vd->vd_driver->vd_suspend(vd); in vt_suspend_handler()
3346 struct vt_device *vd; in vt_resume_handler() local
3348 vd = priv; in vt_resume_handler()
3349 if (vd->vd_driver != NULL && vd->vd_driver->vd_resume != NULL) in vt_resume_handler()
3350 vd->vd_driver->vd_resume(vd); in vt_resume_handler()
3351 vd->vd_flags &= ~VDF_SUSPENDED; in vt_resume_handler()
3405 vt_suspend(struct vt_device *vd) in vt_suspend() argument
3412 vd->vd_savedwindow = vd->vd_curwindow; in vt_suspend()
3414 vt_proc_window_switch(vd->vd_windows[VT_CONSWINDOW]); in vt_suspend()
3418 VT_LOCK(vd); in vt_suspend()
3419 while (vd->vd_curwindow != vd->vd_windows[VT_CONSWINDOW] && error == 0) in vt_suspend()
3420 error = cv_wait_sig(&vd->vd_winswitch, &vd->vd_lock); in vt_suspend()
3421 VT_UNLOCK(vd); in vt_suspend()
3425 vt_resume(struct vt_device *vd) in vt_resume() argument
3431 vt_proc_window_switch(vd->vd_savedwindow); in vt_resume()
3432 vd->vd_savedwindow = NULL; in vt_resume()