Lines Matching refs:tm

55 #define	TERMINAL_LOCK(tm)	do {					\  argument
56 if ((tm)->tm_flags & TF_CONS) \
57 mtx_lock_spin(&(tm)->tm_mtx); \
58 else if ((tm)->tm_tty != NULL) \
59 tty_lock((tm)->tm_tty); \
61 #define TERMINAL_UNLOCK(tm) do { \ argument
62 if ((tm)->tm_flags & TF_CONS) \
63 mtx_unlock_spin(&(tm)->tm_mtx); \
64 else if ((tm)->tm_tty != NULL) \
65 tty_unlock((tm)->tm_tty); \
67 #define TERMINAL_LOCK_TTY(tm) do { \ argument
68 if ((tm)->tm_flags & TF_CONS) \
69 mtx_lock_spin(&(tm)->tm_mtx); \
71 #define TERMINAL_UNLOCK_TTY(tm) do { \ argument
72 if ((tm)->tm_flags & TF_CONS) \
73 mtx_unlock_spin(&(tm)->tm_mtx); \
75 #define TERMINAL_LOCK_CONS(tm) mtx_lock_spin(&(tm)->tm_mtx) argument
76 #define TERMINAL_UNLOCK_CONS(tm) mtx_unlock_spin(&(tm)->tm_mtx) argument
165 terminal_init(struct terminal *tm) in terminal_init() argument
169 if (tm->tm_flags & TF_CONS) in terminal_init()
170 mtx_init(&tm->tm_mtx, "trmlck", NULL, MTX_SPIN); in terminal_init()
172 teken_init(&tm->tm_emulator, &terminal_drawmethods, tm); in terminal_init()
195 teken_set_defattr(&tm->tm_emulator, &default_message); in terminal_init()
201 struct terminal *tm; in terminal_alloc() local
203 tm = malloc(sizeof(struct terminal), M_TERMINAL, M_WAITOK|M_ZERO); in terminal_alloc()
204 terminal_init(tm); in terminal_alloc()
206 tm->tm_class = tc; in terminal_alloc()
207 tm->tm_softc = softc; in terminal_alloc()
209 return (tm); in terminal_alloc()
213 terminal_sync_ttysize(struct terminal *tm) in terminal_sync_ttysize() argument
217 tp = tm->tm_tty; in terminal_sync_ttysize()
222 tty_set_winsize(tp, &tm->tm_winsize); in terminal_sync_ttysize()
227 terminal_maketty(struct terminal *tm, const char *fmt, ...) in terminal_maketty() argument
237 tp = tty_alloc(&terminal_tty_class, tm); in terminal_maketty()
239 tm->tm_tty = tp; in terminal_maketty()
240 terminal_sync_ttysize(tm); in terminal_maketty()
244 terminal_set_cursor(struct terminal *tm, const term_pos_t *pos) in terminal_set_cursor() argument
247 teken_set_cursor(&tm->tm_emulator, pos); in terminal_set_cursor()
251 terminal_set_winsize_blank(struct terminal *tm, const struct winsize *size, in terminal_set_winsize_blank() argument
256 tm->tm_winsize = *size; in terminal_set_winsize_blank()
262 TERMINAL_LOCK(tm); in terminal_set_winsize_blank()
264 teken_set_winsize_noreset(&tm->tm_emulator, &r.tr_end); in terminal_set_winsize_blank()
266 teken_set_winsize(&tm->tm_emulator, &r.tr_end); in terminal_set_winsize_blank()
267 TERMINAL_UNLOCK(tm); in terminal_set_winsize_blank()
269 if ((blank != 0) && !(tm->tm_flags & TF_MUTE)) in terminal_set_winsize_blank()
270 tm->tm_class->tc_fill(tm, &r, in terminal_set_winsize_blank()
273 terminal_sync_ttysize(tm); in terminal_set_winsize_blank()
277 terminal_set_winsize(struct terminal *tm, const struct winsize *size) in terminal_set_winsize() argument
280 terminal_set_winsize_blank(tm, size, 1, in terminal_set_winsize()
291 terminal_mute(struct terminal *tm, int yes) in terminal_mute() argument
294 TERMINAL_LOCK(tm); in terminal_mute()
296 tm->tm_flags |= TF_MUTE; in terminal_mute()
298 tm->tm_flags &= ~TF_MUTE; in terminal_mute()
299 TERMINAL_UNLOCK(tm); in terminal_mute()
303 terminal_input_char(struct terminal *tm, term_char_t c) in terminal_input_char() argument
307 tp = tm->tm_tty; in terminal_input_char()
356 terminal_input_raw(struct terminal *tm, char c) in terminal_input_raw() argument
360 tp = tm->tm_tty; in terminal_input_raw()
371 terminal_input_special(struct terminal *tm, unsigned int k) in terminal_input_special() argument
376 tp = tm->tm_tty; in terminal_input_special()
380 str = teken_get_sequence(&tm->tm_emulator, k); in terminal_input_special()
397 struct terminal *tm = tty_softc(tp); in termtty_open() local
399 tm->tm_class->tc_opened(tm, 1); in termtty_open()
406 struct terminal *tm = tty_softc(tp); in termtty_close() local
408 tm->tm_class->tc_opened(tm, 0); in termtty_close()
414 struct terminal *tm = tty_softc(tp); in termtty_outwakeup() local
420 TERMINAL_LOCK_TTY(tm); in termtty_outwakeup()
421 if (!(tm->tm_flags & TF_MUTE)) { in termtty_outwakeup()
422 tm->tm_flags &= ~TF_BELL; in termtty_outwakeup()
423 teken_input(&tm->tm_emulator, obuf, olen); in termtty_outwakeup()
424 flags |= tm->tm_flags; in termtty_outwakeup()
426 TERMINAL_UNLOCK_TTY(tm); in termtty_outwakeup()
429 TERMINAL_LOCK_TTY(tm); in termtty_outwakeup()
430 if (!(tm->tm_flags & TF_MUTE)) in termtty_outwakeup()
431 tm->tm_class->tc_done(tm); in termtty_outwakeup()
432 TERMINAL_UNLOCK_TTY(tm); in termtty_outwakeup()
434 tm->tm_class->tc_bell(tm); in termtty_outwakeup()
440 struct terminal *tm = tty_softc(tp); in termtty_ioctl() local
453 p = teken_get_cursor(&tm->tm_emulator); in termtty_ioctl()
457 p = teken_get_winsize(&tm->tm_emulator); in termtty_ioctl()
461 teken_get_defattr_cons25(&tm->tm_emulator, &fg, &bg); in termtty_ioctl()
477 error = tm->tm_class->tc_ioctl(tm, cmd, data, td); in termtty_ioctl()
487 teken_set_cursor(&tm->tm_emulator, &p); in termtty_ioctl()
496 struct terminal *tm = tty_softc(tp); in termtty_mmap() local
498 return (tm->tm_class->tc_mmap(tm, offset, paddr, nprot, memattr)); in termtty_mmap()
524 termcn_cnregister(struct terminal *tm) in termcn_cnregister() argument
528 cp = tm->consdev; in termcn_cnregister()
533 cp->cn_arg = tm; in termcn_cnregister()
537 tm->tm_flags = TF_CONS; in termcn_cnregister()
538 tm->consdev = cp; in termcn_cnregister()
540 terminal_init(tm); in termcn_cnregister()
550 struct terminal *tm = cp->cn_arg; in termcn_cngrab() local
552 tm->tm_class->tc_cngrab(tm); in termcn_cngrab()
558 struct terminal *tm = cp->cn_arg; in termcn_cnungrab() local
560 tm->tm_class->tc_cnungrab(tm); in termcn_cnungrab()
566 struct terminal *tm = cp->cn_arg; in termcn_cnprobe() local
568 if (tm == NULL) { in termcn_cnprobe()
573 tm->consdev = cp; in termcn_cnprobe()
574 terminal_init(tm); in termcn_cnprobe()
576 tm->tm_class->tc_cnprobe(tm, cp); in termcn_cnprobe()
594 struct terminal *tm = cp->cn_arg; in termcn_cngetc() local
596 return (tm->tm_class->tc_cngetc(tm)); in termcn_cngetc()
602 struct terminal *tm = cp->cn_arg; in termcn_cnputc() local
606 TERMINAL_LOCK_CONS(tm); in termcn_cnputc()
607 if (!(tm->tm_flags & TF_MUTE)) { in termcn_cnputc()
608 backup = *teken_get_curattr(&tm->tm_emulator); in termcn_cnputc()
609 teken_set_curattr(&tm->tm_emulator, &kernel_message); in termcn_cnputc()
610 teken_input(&tm->tm_emulator, &cv, 1); in termcn_cnputc()
611 teken_set_curattr(&tm->tm_emulator, &backup); in termcn_cnputc()
612 tm->tm_class->tc_done(tm); in termcn_cnputc()
614 TERMINAL_UNLOCK_CONS(tm); in termcn_cnputc()
624 struct terminal *tm = softc; in termteken_bell() local
626 tm->tm_flags |= TF_BELL; in termteken_bell()
632 struct terminal *tm = softc; in termteken_cursor() local
634 tm->tm_class->tc_cursor(tm, p); in termteken_cursor()
641 struct terminal *tm = softc; in termteken_putchar() local
643 tm->tm_class->tc_putchar(tm, p, TCHAR_CREATE(c, a)); in termteken_putchar()
650 struct terminal *tm = softc; in termteken_fill() local
652 tm->tm_class->tc_fill(tm, r, TCHAR_CREATE(c, a)); in termteken_fill()
658 struct terminal *tm = softc; in termteken_copy() local
660 tm->tm_class->tc_copy(tm, r, p); in termteken_copy()
666 struct terminal *tm = softc; in termteken_pre_input() local
668 tm->tm_class->tc_pre_input(tm); in termteken_pre_input()
674 struct terminal *tm = softc; in termteken_post_input() local
676 tm->tm_class->tc_post_input(tm); in termteken_post_input()
682 struct terminal *tm = softc; in termteken_param() local
684 tm->tm_class->tc_param(tm, cmd, arg); in termteken_param()
691 struct terminal *tm = softc; in termteken_respond()
703 tp = tm->tm_tty; in termteken_respond()