Skip to contentSkip to conversation

fbdev: Fix userland compile breakage

PATCH In review Antonino A. Daplas 1 participant 1 message Sep 9, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 4/7 fbdev: Fix userland compile breakage

From Michal Januszewski <[email protected]>

"The latest changes introduced to the fb structs in linux/fb.h make compilation of userspace programs break with:

include/linux/fb.h:305: error: field `modelist' has incomplete type

This is caused by struct list_head not being seen from userspace."

This patch removes struct list_head modelist from struct fb_monspecs and moves it to struct fb_info instead, and for now, enclosed struct fb_monspecs by #ifdef __KERNEL__/#endif.

---

 drivers/video/console/fbcon.c |    4 -
 drivers/video/fbmem.c         |   16 ++--
 drivers/video/modedb.c        |    2
 drivers/video/riva/fbdev.c    |    6 -
 include/linux/fb.h            |  137 ++++++++++++++++++++----------------------
 5 files changed, 82 insertions(+), 83 deletions(-)
drivers/video/console/fbcon.c +2 -2
diff -uprN linux-2.6.9-rc1-mm4-orig/drivers/video/console/fbcon.c linux-2.6.9-rc1-mm4/drivers/video/console/fbcon.c
@@ -689,7 +689,7 @@ static int var_to_display(struct display
 	disp->green = var->green;
 	disp->blue = var->blue;
 	disp->transp = var->transp;
-	disp->mode = fb_match_mode(var, &info->monspecs.modelist);
+	disp->mode = fb_match_mode(var, &info->modelist);
 	if (disp->mode == NULL)
 		/* This should not happen */
 		return -EINVAL;
@@ -1973,7 +1973,7 @@ static int fbcon_resize(struct vc_data *
 		struct fb_videomode *mode;
 
 		DPRINTK("attempting resize %ix%i\n", var.xres, var.yres);
-		mode = fb_find_best_mode(&var, &info->monspecs.modelist);
+		mode = fb_find_best_mode(&var, &info->modelist);
 		if (mode == NULL)
 			return -EINVAL;
 		fb_videomode_to_var(&var, mode);
drivers/video/fbmem.c +8 -8
diff -uprN linux-2.6.9-rc1-mm4-orig/drivers/video/fbmem.c linux-2.6.9-rc1-mm4/drivers/video/fbmem.c
@@ -791,7 +791,7 @@ fb_set_var(struct fb_info *info, struct 
 		}
 
 		if (!ret)
-		    fb_delete_videomode(&mode1, &info->monspecs.modelist);
+		    fb_delete_videomode(&mode1, &info->modelist);
 
 		return ret;
 	}
@@ -818,7 +818,7 @@ fb_set_var(struct fb_info *info, struct 
 			fb_set_cmap(&info->cmap, info);
 
 			fb_var_to_videomode(&mode, &info->var);
-			fb_add_videomode(&mode, &info->monspecs.modelist);
+			fb_add_videomode(&mode, &info->modelist);
 
 			if (info->flags & FBINFO_MISC_MODECHANGEUSER) {
 				struct fb_event event;
@@ -1164,14 +1164,14 @@ register_framebuffer(struct fb_info *fb_
 	}
 	fb_info->sprite.offset = 0;
 
-	if (!fb_info->monspecs.modelist.prev ||
-	    !fb_info->monspecs.modelist.next ||
-	    list_empty(&fb_info->monspecs.modelist)) {
+	if (!fb_info->modelist.prev ||
+	    !fb_info->modelist.next ||
+	    list_empty(&fb_info->modelist)) {
 	        struct fb_videomode mode;
 
-		INIT_LIST_HEAD(&fb_info->monspecs.modelist);
+		INIT_LIST_HEAD(&fb_info->modelist);
 		fb_var_to_videomode(&mode, &fb_info->var);
-		fb_add_videomode(&mode, &fb_info->monspecs.modelist);
+		fb_add_videomode(&mode, &fb_info->modelist);
 	}
 
 	registered_fb[i] = fb_info;
@@ -1209,7 +1209,7 @@ unregister_framebuffer(struct fb_info *f
 		kfree(fb_info->pixmap.addr);
 	if (fb_info->sprite.addr && (fb_info->sprite.flags & FB_PIXMAP_DEFAULT))
 		kfree(fb_info->sprite.addr);
-	fb_destroy_modelist(&fb_info->monspecs.modelist);
+	fb_destroy_modelist(&fb_info->modelist);
 	registered_fb[i]=NULL;
 	num_registered_fb--;
 	class_simple_device_remove(MKDEV(FB_MAJOR, i));
drivers/video/modedb.c +1 -1
diff -uprN linux-2.6.9-rc1-mm4-orig/drivers/video/modedb.c linux-2.6.9-rc1-mm4/drivers/video/modedb.c
@@ -670,7 +670,7 @@ int fb_mode_is_equal(struct fb_videomode
  *
  * IMPORTANT:
  * This function assumes that all modelist entries in
- * info->monspecs.modelist are valid.
+ * info->modelist are valid.
  *
  * NOTES:
  * Finds best matching videomode which has an equal or greater dimension than
drivers/video/riva/fbdev.c +3 -3
diff -uprN linux-2.6.9-rc1-mm4-orig/drivers/video/riva/fbdev.c linux-2.6.9-rc1-mm4/drivers/video/riva/fbdev.c
@@ -1115,14 +1115,14 @@ static int rivafb_check_var(struct fb_va
 	}
 
 	if (!mode_valid) {
-		mode = fb_find_best_mode(var, &info->monspecs.modelist);
+		mode = fb_find_best_mode(var, &info->modelist);
 		if (mode) {
 			riva_update_var(var, mode);
 			mode_valid = 1;
 		}
 	}
 
-	if (!mode_valid && !list_empty(&info->monspecs.modelist))
+	if (!mode_valid && !list_empty(&info->modelist))
 		return -EINVAL;
 
 	if (var->xres_virtual < var->xres)
@@ -1797,7 +1797,7 @@ static void __devinit riva_get_edidinfo(
 
 	fb_edid_to_monspecs(par->EDID, &info->monspecs);
 	fb_videomode_to_modelist(info->monspecs.modedb, info->monspecs.modedb_len,
-				 &info->monspecs.modelist);
+				 &info->modelist);
 	riva_update_default_var(var, info);
 
 	/* if user specified flatpanel, we respect that */
include/linux/fb.h +68 -69

167 lines not on this page · raw message

-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php