Linux 版 (精华区)
发信人: tcpip (偶的昵称改了), 信区: Linux
标 题: holly大虾的内核分析报告(三)(转寄)
发信站: 哈工大紫丁香 (Sat Jan 22 16:30:31 2000), 转信
发信人: stable (xixi), 信区: FreeBSD
标 题: holly大虾的内核分析报告(三)
发信站: BBS 水木清华站 (Fri Jan 21 21:44:28 2000)
---------------------------------------------------------------------------
--#define PIO_FONT8x8 _IOW('c', 64, fnt8_t)
#define GIO_FONT8x8 _IOR('c', 65, fnt8_t)
#define PIO_FONT8x14 _IOW('c', 66, fnt14_t)
#define GIO_FONT8x14 _IOR('c', 67, fnt14_t)
#define PIO_FONT8x16 _IOW('c', 68, fnt16_t)
#define GIO_FONT8x16 _IOR('c', 69, fnt16_t)
Font set operations....Put/Get Font set 8x8, 8x14, and 8x16
fnt8_t: char fnt8x8[8*256]; // 8 bytes per char, 256 chars
fnt14_t: char fnt8x14[14*256];
fnt16_t: char fnt8x16[16*256];
---------------------------------------------------------------------------
---#define CONS_GETINFO _IOWR('c', 73, vid_info_t)
Get current virtual console info
vid_info_t = struct vid_info
struct colors {
char fore;
char back;
};
struct vid_info {
short size; // size should be set as sizeof(vid_info)
short m_num; // The virtual console number startingfrom 0
u_short mv_row, mv_col; // x, y position
u_short mv_rsz, mv_csz; // x, y size
struct colors mv_norm, // Normal color
mv_rev, // reverse color
mv_grfc; // not supported yet
u_char mv_ovscan; // Overscan = border color
u_char mk_keylock; // See LOCK_MASK. The key lock states
};
---------------------------------------------------------------------------
----#define CONS_GETVERS _IOR('c', 74, int)
Get version number
return 0x0200 under FreeBSD 3.2
---------------------------------------------------------------------------
----#define CONS_CURRENTADP _IOR('c', 100, int)
Get current adapter index.
int * -> the current adapte index
---------------------------------------------------------------------------
----#define CONS_ADPINFO _IOWR('c', 101, video_adapter_info_t)
Get adapter info
video_adapter_info_t == struct video_adpater_info
struct video_adapter_info {
int va_index; // Adapter index
int va_type; // adapter type - See KD_MONO,... etc
char va_name[16]; // driver name?
int va_unit; // unit number
int va_flags; // See V_ADP_XXXX below
int va_io_base; // IO base
int va_io_size; // the range
int va_crtc_addr; // CRTC addr
int va_mem_base; // Memory base
int va_mem_size; // Size
u_int va_window; /* virtual address */
size_t va_window_size;
size_t va_window_gran;
u_int va_buffer; /* virtual address */
size_t va_buffer_size;
int va_initial_mode; // Init mode
int va_initial_bios_mode;
int va_mode; // Current Mode
int va_line_width; // bytes?
};
Possible va_flags :
#define V_ADP_COLOR (1<<0)
#define V_ADP_MODECHANGE (1<<1)
#define V_ADP_STATESAVE (1<<2)
#define V_ADP_STATELOAD (1<<3)
#define V_ADP_FONT (1<<4)
#define V_ADP_PALETTE (1<<5)
#define V_ADP_BORDER (1<<6)
#define V_ADP_VESA (1<<7)
#define V_ADP_PROBED (1<<16)
#define V_ADP_INITIALIZED (1<<17)
#define V_ADP_REGISTERED (1<<18)
For modes, See M_XXXXX definitions below.
---------------------------------------------------------------------------
--#define CONS_MODEINFO _IOWR('c', 102, video_info_t)
Get mode info
struct video_info {
int vi_mode; // The mode number??? M_XXXXX ??
int vi_flags; // See below
#define V_INFO_COLOR (1<<0)
#define V_INFO_GRAPHICS (1<<1)
#define V_INFO_LINEAR (1<<2)
#define V_INFO_VESA (1<<3)
int vi_width; // pixel width
int vi_height; // pixel height
int vi_cwidth; // char width - font width
int vi_cheight; // char height - font height
int vi_depth; // color depth
int vi_planes;
u_int vi_window; /* physical address */
size_t vi_window_size;
size_t vi_window_gran;
u_int vi_buffer; /* physical address */
size_t vi_buffer_size;
/* XXX pixel format, memory model,... */
};
see the command output: "vidcontrol -i mode"
ioctl() call will return 0 if find and ENODEV if failed
---------------------------------------------------------------------------
--#define CONS_FINDMODE _IOWR('c', 103, video_info_t)
Find a mode specified by video_info_t parameter.
ioctl() call will return 0 if find and ENODEV if failed
---------------------------------------------------------------------------
--#define CONS_SETWINORG _IO('c', 104 /* u_int */)
Set Window Org. for winorg, see the definition in video_info
---------------------------------------------------------------------------
--#define CONS_SETKBD _IO('c', 110 /* int */)
Set the keyboard to the param.
int param is keyboard index.
Set it as the current keyboard
---------------------------------------------------------------------------
----#define CONS_RELKBD _IO('c', 111)
Release the current keyboard
---------------------------------------------------------------------------
----/* CONS_SAVERMODE */
#define CONS_LKM_SAVER 0
#define CONS_USR_SAVER 1
#ifdef PC98
#define ADJUST_CLOCK _IO('t',100) /* for 98note resum
e */#endif
---------------------------------------------------------------------------
----Virtual Console stuffs
---------------------------------------------------------------------------
----#define VT_OPENQRY _IOR('v', 1, int)
Return first free virtual console number ( from 1? )
Not opened by anyone ! i.e. reserved console for X
---------------------------------------------------------------------------
----#define VT_SETMODE _IOW('v', 2, vtmode_t)
#define VT_GETMODE _IOR('v', 3, vtmode_t)
Get / Set Mode.
struct vt_mode {
char mode; // VT_AUTO, VT_PROCESS, VT_KERNEL ...defined below
char waitv; /* not implemented yet SOS */
short relsig; // The release signal
short acqsig; // The acquire signal
short frsig; /* not implemented yet SOS */
};
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: ox2.ios.ac.cn]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:204.470毫秒