请问/fb.h中结构体fb_info_gen是作什么用的?
不是有fb_info结构体就行了吗?请哪位解说一下这个结构体阿,多谢 这个文件在哪儿啊?我怎么不知道 :( 这个文件在哪儿啊?我怎么不知道 :( 在arm-linux的ARM\arm-linux\include\linux\fb.h中啊
它的定义为
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 */
};
现在我大概有些了解了,呵呵。fb_info结构体实际上只包含framebuffer的一些基本信息和针对上层(对用户层)的一些操作,而fb_info_gen结构体则多了fb_gen_hwswitch结构(该结构也在fb.h中定义),这实际上是一个通用的可以针对各各不同硬件(即LCD控制器)提供底层操作函数的调用,是面向底层的。它的定义如下:
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);
};
余下的uint parsize就我的理解的化我认为是fbgen_hwswitch 结构中函数
void (*get_par)(void *par, struct fb_info_gen *info);的par参数的大小,因为它定义的是空类型,给他一个parsize的化会方便后面的操作的。 该arm-linux是针对at91rm9200的移植。
页:
[1]