xref: /titanic_51/usr/src/uts/common/sys/tem_impl.h (revision aecfc01d1bad84e66649703f7fc2926ef70b34ba)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5fea9cb91Slq150181  * Common Development and Distribution License (the "License").
6fea9cb91Slq150181  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
21fea9cb91Slq150181 
227c478bd9Sstevel@tonic-gate /*
23*aecfc01dSrui zang - Sun Microsystems - Beijing China  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate /*	Copyright (c) 1990, 1991 UNIX System Laboratories, Inc.	*/
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate /*	Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T	*/
307c478bd9Sstevel@tonic-gate /*	  All Rights Reserved  	*/
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate #ifndef	_SYS_TEM_IMPL_H
337c478bd9Sstevel@tonic-gate #define	_SYS_TEM_IMPL_H
347c478bd9Sstevel@tonic-gate 
357c478bd9Sstevel@tonic-gate #ifdef __cplusplus
367c478bd9Sstevel@tonic-gate extern "C" {
377c478bd9Sstevel@tonic-gate #endif
387c478bd9Sstevel@tonic-gate 
39fea9cb91Slq150181 #include <sys/types.h>
40fea9cb91Slq150181 #include <sys/sunddi.h>
417c478bd9Sstevel@tonic-gate #include <sys/sunldi.h>
427c478bd9Sstevel@tonic-gate #include <sys/visual_io.h>
43fea9cb91Slq150181 #include <sys/font.h>
44*aecfc01dSrui zang - Sun Microsystems - Beijing China #include <sys/list.h>
45fea9cb91Slq150181 #include <sys/tem.h>
46*aecfc01dSrui zang - Sun Microsystems - Beijing China #include <sys/note.h>
477c478bd9Sstevel@tonic-gate 
487c478bd9Sstevel@tonic-gate /*
497c478bd9Sstevel@tonic-gate  * definitions for ANSI x3.64 terminal control language parser
507c478bd9Sstevel@tonic-gate  */
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate #define	TEM_MAXPARAMS	5	/* maximum number of ANSI paramters */
537c478bd9Sstevel@tonic-gate #define	TEM_MAXTAB	40	/* maximum number of tab stops */
547c478bd9Sstevel@tonic-gate #define	TEM_MAXFKEY	30	/* max length of function key with <ESC>Q */
557c478bd9Sstevel@tonic-gate #define	MAX_TEM		2	/* max number of loadable terminal emulators */
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate #define	TEM_SCROLL_UP		0
587c478bd9Sstevel@tonic-gate #define	TEM_SCROLL_DOWN		1
597c478bd9Sstevel@tonic-gate #define	TEM_SHIFT_LEFT		0
607c478bd9Sstevel@tonic-gate #define	TEM_SHIFT_RIGHT		1
617c478bd9Sstevel@tonic-gate 
627c478bd9Sstevel@tonic-gate #define	TEM_ATTR_NORMAL		0x0000
637c478bd9Sstevel@tonic-gate #define	TEM_ATTR_REVERSE	0x0001
647c478bd9Sstevel@tonic-gate #define	TEM_ATTR_BOLD		0x0002
657c478bd9Sstevel@tonic-gate #define	TEM_ATTR_BLINK		0x0004
667c478bd9Sstevel@tonic-gate #define	TEM_ATTR_TRANSPARENT	0x0008
677c478bd9Sstevel@tonic-gate #define	TEM_ATTR_SCREEN_REVERSE	0x0010
687c478bd9Sstevel@tonic-gate 
697c478bd9Sstevel@tonic-gate #define	ANSI_COLOR_BLACK	0
707c478bd9Sstevel@tonic-gate #define	ANSI_COLOR_WHITE	7
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate #define	TEM_TEXT_WHITE		0
737c478bd9Sstevel@tonic-gate #define	TEM_TEXT_BLACK		1
747c478bd9Sstevel@tonic-gate #define	TEM_TEXT_BLACK24_RED	0x00
757c478bd9Sstevel@tonic-gate #define	TEM_TEXT_BLACK24_GREEN	0x00
767c478bd9Sstevel@tonic-gate #define	TEM_TEXT_BLACK24_BLUE	0x00
777c478bd9Sstevel@tonic-gate #define	TEM_TEXT_WHITE24_RED	0xff
787c478bd9Sstevel@tonic-gate #define	TEM_TEXT_WHITE24_GREEN	0xff
797c478bd9Sstevel@tonic-gate #define	TEM_TEXT_WHITE24_BLUE	0xff
807c478bd9Sstevel@tonic-gate 
817c478bd9Sstevel@tonic-gate #define	A_STATE_START			0
827c478bd9Sstevel@tonic-gate #define	A_STATE_ESC			1
8351fd4921Slt200341 #define	A_STATE_CSI			2
8451fd4921Slt200341 #define	A_STATE_CSI_QMARK		3
8551fd4921Slt200341 #define	A_STATE_CSI_EQUAL		4
867c478bd9Sstevel@tonic-gate 
877c478bd9Sstevel@tonic-gate /*
887c478bd9Sstevel@tonic-gate  * Default number of rows and columns
897c478bd9Sstevel@tonic-gate  */
907c478bd9Sstevel@tonic-gate #define	TEM_DEFAULT_ROWS	34
917c478bd9Sstevel@tonic-gate #define	TEM_DEFAULT_COLS	80
927c478bd9Sstevel@tonic-gate 
93c9503a49Slq150181 /*
94c9503a49Slq150181  * Default foreground/background color
95c9503a49Slq150181  */
96*aecfc01dSrui zang - Sun Microsystems - Beijing China 
97c9503a49Slq150181 #ifdef _HAVE_TEM_FIRMWARE
98c9503a49Slq150181 #define	DEFAULT_ANSI_FOREGROUND	ANSI_COLOR_BLACK
99c9503a49Slq150181 #define	DEFAULT_ANSI_BACKGROUND	ANSI_COLOR_WHITE
100c9503a49Slq150181 #else /* _HAVE_TEM_FIRMWARE */
101c9503a49Slq150181 #define	DEFAULT_ANSI_FOREGROUND	ANSI_COLOR_WHITE
102c9503a49Slq150181 #define	DEFAULT_ANSI_BACKGROUND	ANSI_COLOR_BLACK
103c9503a49Slq150181 #endif
104c9503a49Slq150181 
105*aecfc01dSrui zang - Sun Microsystems - Beijing China 
1067c478bd9Sstevel@tonic-gate #define	BUF_LEN		160 /* Two lines of data can be processed at a time */
1077c478bd9Sstevel@tonic-gate 
1087c478bd9Sstevel@tonic-gate typedef uint8_t text_color_t;
1097c478bd9Sstevel@tonic-gate 
110c9503a49Slq150181 typedef struct tem_color {
111c9503a49Slq150181 	text_color_t	fg_color;
112c9503a49Slq150181 	text_color_t	bg_color;
113c9503a49Slq150181 	unsigned short	a_flags;
114c9503a49Slq150181 } tem_color_t;
115c9503a49Slq150181 
116*aecfc01dSrui zang - Sun Microsystems - Beijing China enum called_from { CALLED_FROM_NORMAL, CALLED_FROM_STANDALONE };
117*aecfc01dSrui zang - Sun Microsystems - Beijing China 
1187c478bd9Sstevel@tonic-gate struct tem_pix_pos {
1197c478bd9Sstevel@tonic-gate 	screen_pos_t	x;
1207c478bd9Sstevel@tonic-gate 	screen_pos_t	y;
1217c478bd9Sstevel@tonic-gate };
1227c478bd9Sstevel@tonic-gate 
1237c478bd9Sstevel@tonic-gate struct tem_char_pos {
1247c478bd9Sstevel@tonic-gate 	screen_pos_t	col;
1257c478bd9Sstevel@tonic-gate 	screen_pos_t	row;
1267c478bd9Sstevel@tonic-gate };
1277c478bd9Sstevel@tonic-gate 
1287c478bd9Sstevel@tonic-gate struct tem_size {
1297c478bd9Sstevel@tonic-gate 	screen_size_t	width;
1307c478bd9Sstevel@tonic-gate 	screen_size_t	height;
1317c478bd9Sstevel@tonic-gate };
1327c478bd9Sstevel@tonic-gate 
133fea9cb91Slq150181 typedef struct {
134fea9cb91Slq150181 	uint8_t red[16];
135fea9cb91Slq150181 	uint8_t green[16];
136fea9cb91Slq150181 	uint8_t blue[16];
137fea9cb91Slq150181 } text_cmap_t;
138fea9cb91Slq150181 
139fea9cb91Slq150181 extern text_cmap_t cmap4_to_24;
140fea9cb91Slq150181 
141*aecfc01dSrui zang - Sun Microsystems - Beijing China /*
142*aecfc01dSrui zang - Sun Microsystems - Beijing China  * State structure for each virtual terminal emulator
143*aecfc01dSrui zang - Sun Microsystems - Beijing China  */
144*aecfc01dSrui zang - Sun Microsystems - Beijing China struct tem_vt_state {
145*aecfc01dSrui zang - Sun Microsystems - Beijing China 	kmutex_t	tvs_lock;
146*aecfc01dSrui zang - Sun Microsystems - Beijing China 	uchar_t		tvs_fbmode;	/* framebuffer mode */
147*aecfc01dSrui zang - Sun Microsystems - Beijing China 	unsigned short	tvs_flags;	/* flags for this x3.64 terminal */
148*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_state;	/* state in output esc seq processing */
149*aecfc01dSrui zang - Sun Microsystems - Beijing China 	boolean_t	tvs_gotparam;	/* does output esc seq have a param */
1507c478bd9Sstevel@tonic-gate 
151*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	tvs_curparam;	/* current param # of output esc seq */
152*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	tvs_paramval;	/* value of current param */
153*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	tvs_params[TEM_MAXPARAMS];  /* parameters of output esc seq */
154*aecfc01dSrui zang - Sun Microsystems - Beijing China 	screen_pos_t	tvs_tabs[TEM_MAXTAB];	/* tab stops */
155*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	tvs_ntabs;		/* number of tabs used */
156*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	tvs_nscroll;		/* number of lines to scroll */
1577c478bd9Sstevel@tonic-gate 
158*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_char_pos tvs_s_cursor;	/* start cursor position */
159*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_char_pos tvs_c_cursor;	/* current cursor position */
160*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_char_pos tvs_r_cursor;	/* remembered cursor position */
161*aecfc01dSrui zang - Sun Microsystems - Beijing China 
162*aecfc01dSrui zang - Sun Microsystems - Beijing China 	unsigned char	*tvs_outbuf;	/* place to keep incomplete lines */
163*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_outbuf_size;
164*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_outindex;	/* index into a_outbuf */
165*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void   		*tvs_pix_data;	/* pointer to tmp bitmap area */
166*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_pix_data_size;
167*aecfc01dSrui zang - Sun Microsystems - Beijing China 	text_color_t	tvs_fg_color;
168*aecfc01dSrui zang - Sun Microsystems - Beijing China 	text_color_t	tvs_bg_color;
169*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_first_line;	/* kernel console output begins */
170*aecfc01dSrui zang - Sun Microsystems - Beijing China 
171*aecfc01dSrui zang - Sun Microsystems - Beijing China 	unsigned char	*tvs_screen_buf;	/* whole screen buffer */
172*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_screen_buf_size;
173*aecfc01dSrui zang - Sun Microsystems - Beijing China 	text_color_t	*tvs_fg_buf;	/* fg_color attribute cache */
174*aecfc01dSrui zang - Sun Microsystems - Beijing China 	text_color_t	*tvs_bg_buf;	/* bg_color attribute cache */
175*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_color_buf_size;
176*aecfc01dSrui zang - Sun Microsystems - Beijing China 
177*aecfc01dSrui zang - Sun Microsystems - Beijing China 	boolean_t	tvs_isactive;
178*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int		tvs_initialized;	/* initialization flag */
179*aecfc01dSrui zang - Sun Microsystems - Beijing China 
180*aecfc01dSrui zang - Sun Microsystems - Beijing China 	list_node_t	tvs_list_node;
181*aecfc01dSrui zang - Sun Microsystems - Beijing China };
182*aecfc01dSrui zang - Sun Microsystems - Beijing China _NOTE(MUTEX_PROTECTS_DATA(tem_vt_state::tvs_lock, tem_vt_state))
183*aecfc01dSrui zang - Sun Microsystems - Beijing China 
184*aecfc01dSrui zang - Sun Microsystems - Beijing China typedef struct tem_safe_callbacks {
185*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void (*tsc_display)(struct tem_vt_state *, unsigned char *, int,
1867c478bd9Sstevel@tonic-gate 	    screen_pos_t, screen_pos_t, unsigned char, unsigned char,
1877c478bd9Sstevel@tonic-gate 	    cred_t *, enum called_from);
188*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void (*tsc_copy)(struct tem_vt_state *,
1897c478bd9Sstevel@tonic-gate 	    screen_pos_t, screen_pos_t, screen_pos_t, screen_pos_t,
1907c478bd9Sstevel@tonic-gate 	    screen_pos_t, screen_pos_t, cred_t *, enum called_from);
191*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void (*tsc_cursor)(struct tem_vt_state *, short, cred_t *,
1927c478bd9Sstevel@tonic-gate 	    enum called_from);
193*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void (*tsc_bit2pix)(struct tem_vt_state *, unsigned char,
1947c478bd9Sstevel@tonic-gate 	    unsigned char, unsigned char);
195*aecfc01dSrui zang - Sun Microsystems - Beijing China 	void (*tsc_cls)(struct tem_vt_state *, int,
1967c478bd9Sstevel@tonic-gate 	    screen_pos_t, screen_pos_t, cred_t *, enum called_from);
197*aecfc01dSrui zang - Sun Microsystems - Beijing China } tem_safe_callbacks_t;
1987c478bd9Sstevel@tonic-gate 
1997c478bd9Sstevel@tonic-gate /*
200*aecfc01dSrui zang - Sun Microsystems - Beijing China  * common term soft state structure shared by all virtual terminal emulators
2017c478bd9Sstevel@tonic-gate  */
202*aecfc01dSrui zang - Sun Microsystems - Beijing China typedef struct tem_state {
203*aecfc01dSrui zang - Sun Microsystems - Beijing China 	ldi_handle_t	ts_hdl;	/* Framework handle for layered on dev */
204*aecfc01dSrui zang - Sun Microsystems - Beijing China 	screen_size_t	ts_linebytes;	/* Layered on bytes per scan line */
205*aecfc01dSrui zang - Sun Microsystems - Beijing China 
206*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	ts_display_mode;	/* What mode we are in */
207*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct	vis_polledio	*ts_fb_polledio;
208*aecfc01dSrui zang - Sun Microsystems - Beijing China 
209*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_size ts_c_dimension;	/* window dimensions in characters */
210*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_size ts_p_dimension;	/* screen dimensions in pixels */
211*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_pix_pos ts_p_offset;	/* pix offset to center the display */
212*aecfc01dSrui zang - Sun Microsystems - Beijing China 
213*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	ts_pix_data_size;	/* size of bitmap data areas */
214*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	ts_pdepth;		/* pixel depth */
215*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct font	ts_font;	/* font table */
216*aecfc01dSrui zang - Sun Microsystems - Beijing China 
217*aecfc01dSrui zang - Sun Microsystems - Beijing China 	unsigned char	*ts_blank_line;	/* a blank line for scrolling */
218*aecfc01dSrui zang - Sun Microsystems - Beijing China 	tem_safe_callbacks_t	*ts_callbacks;	/* internal output functions */
219*aecfc01dSrui zang - Sun Microsystems - Beijing China 
220*aecfc01dSrui zang - Sun Microsystems - Beijing China 	int	ts_initialized;		/* initialization flag */
221*aecfc01dSrui zang - Sun Microsystems - Beijing China 
222*aecfc01dSrui zang - Sun Microsystems - Beijing China 	tem_modechg_cb_t	ts_modechg_cb;
223*aecfc01dSrui zang - Sun Microsystems - Beijing China 	tem_modechg_cb_arg_t	ts_modechg_arg;
224*aecfc01dSrui zang - Sun Microsystems - Beijing China 
225*aecfc01dSrui zang - Sun Microsystems - Beijing China 	tem_color_t	ts_init_color; /* initial color and attributes */
226*aecfc01dSrui zang - Sun Microsystems - Beijing China 
227*aecfc01dSrui zang - Sun Microsystems - Beijing China 	struct tem_vt_state	*ts_active;
228*aecfc01dSrui zang - Sun Microsystems - Beijing China 	kmutex_t	ts_lock;
229*aecfc01dSrui zang - Sun Microsystems - Beijing China 	list_t		ts_list;	/* chain of all tems */
230fea9cb91Slq150181 } tem_state_t;
231fea9cb91Slq150181 
232*aecfc01dSrui zang - Sun Microsystems - Beijing China extern tem_state_t tems;
233*aecfc01dSrui zang - Sun Microsystems - Beijing China extern tem_safe_callbacks_t tem_safe_text_callbacks;
234*aecfc01dSrui zang - Sun Microsystems - Beijing China extern tem_safe_callbacks_t tem_safe_pix_callbacks;
235fea9cb91Slq150181 
236*aecfc01dSrui zang - Sun Microsystems - Beijing China 
237*aecfc01dSrui zang - Sun Microsystems - Beijing China /*
238*aecfc01dSrui zang - Sun Microsystems - Beijing China  * tems_* fuctions mean that they just operate on the common soft state
239*aecfc01dSrui zang - Sun Microsystems - Beijing China  * (tem_state_t), and tem_* functions mean that they operate on the
240*aecfc01dSrui zang - Sun Microsystems - Beijing China  * per-tem structure (tem_vt_state). All "safe" interfaces are in tem_safe.c.
241*aecfc01dSrui zang - Sun Microsystems - Beijing China  */
242*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tems_display_layered(struct vis_consdisplay *, cred_t *);
243*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tems_copy_layered(struct vis_conscopy *, cred_t *);
244*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tems_cursor_layered(struct vis_conscursor *, cred_t *);
245*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tems_safe_copy(struct vis_conscopy *, cred_t *, enum called_from);
246*aecfc01dSrui zang - Sun Microsystems - Beijing China 
247*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_pix_align(struct tem_vt_state *, cred_t *, enum called_from);
248*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_check_first_time(struct tem_vt_state *tem, cred_t *,
249fea9cb91Slq150181 	    enum called_from);
250*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_reset_display(struct tem_vt_state *, cred_t *,
251*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    enum called_from, boolean_t, boolean_t);
252*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_terminal_emulate(struct tem_vt_state *, uchar_t *, int,
253*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    cred_t *, enum called_from);
254*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_text_display(struct tem_vt_state *, uchar_t *,
255fea9cb91Slq150181 	    int, screen_pos_t, screen_pos_t,
256fea9cb91Slq150181 	    text_color_t, text_color_t,
257fea9cb91Slq150181 	    cred_t *, enum called_from);
258*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_text_copy(struct tem_vt_state *,
259fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
260fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
261fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
262fea9cb91Slq150181 	    cred_t *, enum called_from);
263*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_text_cursor(struct tem_vt_state *, short, cred_t *,
264*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    enum called_from);
265*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_text_cls(struct tem_vt_state *,
266fea9cb91Slq150181 	    int count, screen_pos_t row, screen_pos_t col,
267fea9cb91Slq150181 	    cred_t *credp, enum called_from called_from);
268*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_display(struct tem_vt_state *, uchar_t *,
269fea9cb91Slq150181 	    int, screen_pos_t, screen_pos_t,
270fea9cb91Slq150181 	    text_color_t, text_color_t,
271fea9cb91Slq150181 	    cred_t *, enum called_from);
272*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_copy(struct tem_vt_state *,
273fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
274fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
275fea9cb91Slq150181 	    screen_pos_t, screen_pos_t,
276fea9cb91Slq150181 	    cred_t *, enum called_from);
277*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_cursor(struct tem_vt_state *, short, cred_t *,
278*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    enum called_from);
279*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_bit2pix(struct tem_vt_state *, unsigned char,
280*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    unsigned char, unsigned char);
281*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_cls(struct tem_vt_state *, int, screen_pos_t, screen_pos_t,
282fea9cb91Slq150181 	    cred_t *, enum called_from);
283*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_cls_range(struct tem_vt_state *,
284fea9cb91Slq150181 	    screen_pos_t, int, int,
285fea9cb91Slq150181 	    screen_pos_t, int, int,
286fea9cb91Slq150181 	    boolean_t, cred_t *, enum called_from);
287fea9cb91Slq150181 
288*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_pix_clear_entire_screen(struct tem_vt_state *,
289*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    cred_t *, enum called_from);
290fea9cb91Slq150181 
291*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_get_color(struct tem_vt_state *, text_color_t *,
292*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    text_color_t *, uint8_t);
293fea9cb91Slq150181 void	set_font(struct font *, short *, short *, short, short);
2947c478bd9Sstevel@tonic-gate 
295*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_blank_screen(struct tem_vt_state *, cred_t *,
296*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    enum called_from);
297*aecfc01dSrui zang - Sun Microsystems - Beijing China void	tem_safe_unblank_screen(struct tem_vt_state *, cred_t *,
298*aecfc01dSrui zang - Sun Microsystems - Beijing China 	    enum called_from);
299*aecfc01dSrui zang - Sun Microsystems - Beijing China 
3007c478bd9Sstevel@tonic-gate #ifdef __cplusplus
3017c478bd9Sstevel@tonic-gate }
3027c478bd9Sstevel@tonic-gate #endif
3037c478bd9Sstevel@tonic-gate 
3047c478bd9Sstevel@tonic-gate #endif /* _SYS_TEM_IMPL_H */
305