|  | 
 
 楼主|
发表于 2005-11-12 10:11:01
|
显示全部楼层 
| 在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的化会方便后面的操作的。
 | 
 |