📄 fb.h
字号:
/* * This is the interface between the low-level console driver and the * low-level frame buffer device */struct display { /* Filled in by the frame buffer device */ struct fb_var_screeninfo var; /* variable infos. yoffset and vmode */ /* are updated by fbcon.c */ struct fb_cmap cmap; /* colormap */ char *screen_base; /* pointer to top of virtual screen */ /* (virtual address) */ int visual; int type; /* see FB_TYPE_* */ int type_aux; /* Interleave for interleaved Planes */ u_short ypanstep; /* zero if no hardware ypan */ u_short ywrapstep; /* zero if no hardware ywrap */ u_long line_length; /* length of a line in bytes */ u_short can_soft_blank; /* zero if no hardware blanking */ u_short inverse; /* != 0 text black on white as default */ struct display_switch *dispsw; /* low level operations */ void *dispsw_data; /* optional dispsw helper data */#if 0 struct fb_fix_cursorinfo fcrsr; struct fb_var_cursorinfo *vcrsr; struct fb_cursorstate crsrstate;#endif /* Filled in by the low-level console driver */ struct vc_data *conp; /* pointer to console data */ struct fb_info *fb_info; /* frame buffer for this console */ int vrows; /* number of virtual rows */ unsigned short cursor_x; /* current cursor position */ unsigned short cursor_y; int fgcol; /* text colors */ int bgcol; u_long next_line; /* offset to one line below */ u_long next_plane; /* offset to next plane */ u_char *fontdata; /* Font associated to this display */ unsigned short _fontheightlog; unsigned short _fontwidthlog; unsigned short _fontheight; unsigned short _fontwidth; int userfont; /* != 0 if fontdata kmalloc()ed */ u_short scrollmode; /* Scroll Method */ short yscroll; /* Hardware scrolling */ unsigned char fgshift, bgshift; unsigned short charmask; /* 0xff or 0x1ff */};struct fb_info { char modename[40]; /* default video mode */ kdev_t node; int flags;#define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */ struct fb_ops *fbops; struct fb_monspecs monspecs; struct display *disp; /* initial display variable */ struct vc_data *display_fg; /* Console visible on this display */ char fontname[40]; /* default font name */ int (*changevar)(int); /* tell console var has changed */ int (*switch_con)(int, struct fb_info*); /* tell fb to switch consoles */ int (*updatevar)(int, struct fb_info*); /* tell fb to update the vars */ void (*blank)(int, struct fb_info*); /* tell fb to (un)blank the screen */ /* arg = 0: unblank */ /* arg > 0: VESA level (arg-1) */ /* From here on everything is device dependent */};#ifdef MODULE#define FBINFO_FLAG_DEFAULT FBINFO_FLAG_MODULE#else#define FBINFO_FLAG_DEFAULT 0#endif /* * This structure abstracts from the underlying hardware. It is not * mandatory but used by the `generic' frame buffer operations. * Read drivers/video/skeletonfb.c for more information. */struct fbgen_hwswitch { void (*detect)(void); int (*encode_fix)(struct fb_fix_screeninfo *fix, const void *par, struct fb_info_gen *info); int (*decode_var)(const struct fb_var_screeninfo *var, void *par, struct fb_info_gen *info); int (*encode_var)(struct fb_var_screeninfo *var, const void *par, struct fb_info_gen *info); void (*get_par)(void *par, struct fb_info_gen *info); void (*set_par)(const void *par, struct fb_info_gen *info); int (*getcolreg)(unsigned regno, unsigned *red, unsigned *green, unsigned *blue, unsigned *transp, struct fb_info *info); int (*setcolreg)(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info); int (*pan_display)(const struct fb_var_screeninfo *var, struct fb_info_gen *info); int (*blank)(int blank_mode, struct fb_info_gen *info); void (*set_disp)(const void *par, struct display *disp, struct fb_info_gen *info);};struct fb_info_gen { struct fb_info info; /* Entries for a generic frame buffer device */ /* Yes, this starts looking like C++ */ u_int parsize; struct fbgen_hwswitch *fbhw; /* From here on everything is device dependent */}; /* * `Generic' versions of the frame buffer device operations */extern int fbgen_get_fix(struct fb_fix_screeninfo *fix, int con, struct fb_info *info);extern int fbgen_get_var(struct fb_var_screeninfo *var, int con, struct fb_info *info);extern int fbgen_set_var(struct fb_var_screeninfo *var, int con, struct fb_info *info);extern int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);extern int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con, struct fb_info *info);extern int fbgen_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg, int con, struct fb_info *info); /* * Helper functions */extern int fbgen_do_set_var(struct fb_var_screeninfo *var, int isactive, struct fb_info_gen *info);extern void fbgen_set_disp(int con, struct fb_info_gen *info);extern void fbgen_install_cmap(int con, struct fb_info_gen *info);extern int fbgen_update_var(int con, struct fb_info *info);extern int fbgen_switch(int con, struct fb_info *info);extern void fbgen_blank(int blank, struct fb_info *info);struct fb_videomode { const char *name; struct fb_var_screeninfo var;};/* drivers/char/fbmem.c */extern int register_framebuffer(struct fb_info *fb_info);extern int unregister_framebuffer(const struct fb_info *fb_info);extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal, const struct fb_info *fb_info);extern int fbmon_dpms(const struct fb_info *fb_info);extern int num_registered_fb;extern struct fb_info *registered_fb[FB_MAX];extern char con2fb_map[MAX_NR_CONSOLES];/* drivers/video/fbcon.c */extern struct display fb_display[MAX_NR_CONSOLES];/* drivers/video/fbcmap.c */extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to, int fsfromto);extern int fb_get_cmap(struct fb_cmap *cmap, int kspc, int (*getcolreg)(u_int, u_int *, u_int *, u_int *, u_int *, struct fb_info *), struct fb_info *fb_info);extern int fb_set_cmap(struct fb_cmap *cmap, int kspc, int (*setcolreg)(u_int, u_int, u_int, u_int, u_int, struct fb_info *), struct fb_info *fb_info);extern struct fb_cmap *fb_default_cmap(int len);extern void fb_invert_cmaps(void);/* VESA Blanking Levels */#define VESA_NO_BLANKING 0#define VESA_VSYNC_SUSPEND 1#define VESA_HSYNC_SUSPEND 2#define VESA_POWERDOWN 3#endif /* __KERNEL__ */#if 1#define FBCMD_GET_CURRENTPAR 0xDEAD0005#define FBCMD_SET_CURRENTPAR 0xDEAD8005#endif#if 1 /* Preliminary */ /* * Hardware Cursor */#define FBIOGET_FCURSORINFO 0x4607#define FBIOGET_VCURSORINFO 0x4608#define FBIOPUT_VCURSORINFO 0x4609#define FBIOGET_CURSORSTATE 0x460A#define FBIOPUT_CURSORSTATE 0x460Bstruct fb_fix_cursorinfo { __u16 crsr_width; /* width and height of the cursor in */ __u16 crsr_height; /* pixels (zero if no cursor) */ __u16 crsr_xsize; /* cursor size in display pixels */ __u16 crsr_ysize; __u16 crsr_color1; /* colormap entry for cursor color1 */ __u16 crsr_color2; /* colormap entry for cursor color2 */};struct fb_var_cursorinfo { __u16 width; __u16 height; __u16 xspot; __u16 yspot; __u8 data[1]; /* field with [height][width] */};struct fb_cursorstate { __s16 xoffset; __s16 yoffset; __u16 mode;};#define FB_CURSOR_OFF 0#define FB_CURSOR_ON 1#define FB_CURSOR_FLASH 2#endif /* Preliminary */#endif /* _LINUX_FB_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -