荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bstone (Live my life!), 信区: Linux
标  题: holly大虾的内核分析报告(三)
发信站: BBS 荔园晨风站 (Sat Jan 22 08:54:46 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;
        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)
#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?
    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_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
        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 resume */
#endif
-------------------------------------------------------------------------------
Virtual Console stuffs
-------------------------------------------------------------------------------
#define VT_OPENQRY      _IOR('v', 1, int)
#ifdef PC98
        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 荔园晨风站 bbs.szu.edu.cn.[FROM: bbs@192.168.28.28]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店