提交 2f4516db 编写于 作者: J Jan Beulich 提交者: Linus Torvalds

[PATCH] fbcon: constify font data

const-ify the font control structures and data, to make somewhat better
guarantees that these are not modified anywhere in the kernel.
Specifically for a kernel debugger to share this information from the
normal kernel code, such a guarantee seems rather desirable.
Signed-off-by: NJan Beulich <jbeulich@novell.com>
Cc: "Antonino A. Daplas" <adaplas@hotpop.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 e703ecc3
...@@ -767,7 +767,7 @@ static const char *fbcon_startup(void) ...@@ -767,7 +767,7 @@ static const char *fbcon_startup(void)
const char *display_desc = "frame buffer device"; const char *display_desc = "frame buffer device";
struct display *p = &fb_display[fg_console]; struct display *p = &fb_display[fg_console];
struct vc_data *vc = vc_cons[fg_console].d; struct vc_data *vc = vc_cons[fg_console].d;
struct font_desc *font = NULL; const struct font_desc *font = NULL;
struct module *owner; struct module *owner;
struct fb_info *info = NULL; struct fb_info *info = NULL;
struct fbcon_ops *ops; struct fbcon_ops *ops;
...@@ -841,7 +841,7 @@ static const char *fbcon_startup(void) ...@@ -841,7 +841,7 @@ static const char *fbcon_startup(void)
info->var.yres); info->var.yres);
vc->vc_font.width = font->width; vc->vc_font.width = font->width;
vc->vc_font.height = font->height; vc->vc_font.height = font->height;
vc->vc_font.data = p->fontdata = font->data; vc->vc_font.data = (void *)(p->fontdata = font->data);
vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */ vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */
} }
...@@ -941,7 +941,7 @@ static void fbcon_init(struct vc_data *vc, int init) ...@@ -941,7 +941,7 @@ static void fbcon_init(struct vc_data *vc, int init)
fb, copy the font from that console */ fb, copy the font from that console */
t = &fb_display[svc->vc_num]; t = &fb_display[svc->vc_num];
if (!vc->vc_font.data) { if (!vc->vc_font.data) {
vc->vc_font.data = p->fontdata = t->fontdata; vc->vc_font.data = (void *)(p->fontdata = t->fontdata);
vc->vc_font.width = (*default_mode)->vc_font.width; vc->vc_font.width = (*default_mode)->vc_font.width;
vc->vc_font.height = (*default_mode)->vc_font.height; vc->vc_font.height = (*default_mode)->vc_font.height;
p->userfont = t->userfont; p->userfont = t->userfont;
...@@ -1188,7 +1188,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, ...@@ -1188,7 +1188,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
return; return;
t = &fb_display[svc->vc_num]; t = &fb_display[svc->vc_num];
if (!vc->vc_font.data) { if (!vc->vc_font.data) {
vc->vc_font.data = p->fontdata = t->fontdata; vc->vc_font.data = (void *)(p->fontdata = t->fontdata);
vc->vc_font.width = (*default_mode)->vc_font.width; vc->vc_font.width = (*default_mode)->vc_font.width;
vc->vc_font.height = (*default_mode)->vc_font.height; vc->vc_font.height = (*default_mode)->vc_font.height;
p->userfont = t->userfont; p->userfont = t->userfont;
...@@ -2150,7 +2150,7 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) ...@@ -2150,7 +2150,7 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
} }
static int fbcon_do_set_font(struct vc_data *vc, int w, int h, static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
u8 * data, int userfont) const u8 * data, int userfont)
{ {
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
struct display *p = &fb_display[vc->vc_num]; struct display *p = &fb_display[vc->vc_num];
...@@ -2168,7 +2168,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, ...@@ -2168,7 +2168,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
cnt = FNTCHARCNT(data); cnt = FNTCHARCNT(data);
else else
cnt = 256; cnt = 256;
vc->vc_font.data = p->fontdata = data; vc->vc_font.data = (void *)(p->fontdata = data);
if ((p->userfont = userfont)) if ((p->userfont = userfont))
REFCOUNT(data)++; REFCOUNT(data)++;
vc->vc_font.width = w; vc->vc_font.width = w;
...@@ -2325,7 +2325,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne ...@@ -2325,7 +2325,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne
tmp->vc_font.width == w && tmp->vc_font.width == w &&
!memcmp(fb_display[i].fontdata, new_data, size)) { !memcmp(fb_display[i].fontdata, new_data, size)) {
kfree(new_data - FONT_EXTRA_WORDS * sizeof(int)); kfree(new_data - FONT_EXTRA_WORDS * sizeof(int));
new_data = fb_display[i].fontdata; new_data = (u8 *)fb_display[i].fontdata;
break; break;
} }
} }
...@@ -2335,7 +2335,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne ...@@ -2335,7 +2335,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne
static int fbcon_set_def_font(struct vc_data *vc, struct console_font *font, char *name) static int fbcon_set_def_font(struct vc_data *vc, struct console_font *font, char *name)
{ {
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
struct font_desc *f; const struct font_desc *f;
if (!name) if (!name)
f = get_default_font(info->var.xres, info->var.yres); f = get_default_font(info->var.xres, info->var.yres);
......
...@@ -30,7 +30,7 @@ struct display { ...@@ -30,7 +30,7 @@ struct display {
/* Filled in by the frame buffer device */ /* Filled in by the frame buffer device */
u_short inverse; /* != 0 text black on white as default */ u_short inverse; /* != 0 text black on white as default */
/* Filled in by the low-level console driver */ /* Filled in by the low-level console driver */
u_char *fontdata; const u_char *fontdata;
int userfont; /* != 0 if fontdata kmalloc()ed */ int userfont; /* != 0 if fontdata kmalloc()ed */
u_short scrollmode; /* Scroll Method */ u_short scrollmode; /* Scroll Method */
short yscroll; /* Hardware scrolling */ short yscroll; /* Hardware scrolling */
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#define FONTDATAMAX 9216 #define FONTDATAMAX 9216
static unsigned char fontdata_10x18[FONTDATAMAX] = { static const unsigned char fontdata_10x18[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */
...@@ -5132,7 +5132,7 @@ static unsigned char fontdata_10x18[FONTDATAMAX] = { ...@@ -5132,7 +5132,7 @@ static unsigned char fontdata_10x18[FONTDATAMAX] = {
}; };
struct font_desc font_10x18 = { const struct font_desc font_10x18 = {
FONT10x18_IDX, FONT10x18_IDX,
"10x18", "10x18",
10, 10,
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#define FONTDATAMAX (11*256) #define FONTDATAMAX (11*256)
static unsigned char fontdata_6x11[FONTDATAMAX] = { static const unsigned char fontdata_6x11[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -3341,7 +3341,7 @@ static unsigned char fontdata_6x11[FONTDATAMAX] = { ...@@ -3341,7 +3341,7 @@ static unsigned char fontdata_6x11[FONTDATAMAX] = {
}; };
struct font_desc font_vga_6x11 = { const struct font_desc font_vga_6x11 = {
VGA6x11_IDX, VGA6x11_IDX,
"ProFont6x11", "ProFont6x11",
6, 6,
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#define FONTDATAMAX 3584 #define FONTDATAMAX 3584
static unsigned char fontdata_7x14[FONTDATAMAX] = { static const unsigned char fontdata_7x14[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 0000000 */ 0x00, /* 0000000 */
...@@ -4108,7 +4108,7 @@ static unsigned char fontdata_7x14[FONTDATAMAX] = { ...@@ -4108,7 +4108,7 @@ static unsigned char fontdata_7x14[FONTDATAMAX] = {
}; };
struct font_desc font_7x14 = { const struct font_desc font_7x14 = {
FONT7x14_IDX, FONT7x14_IDX,
"7x14", "7x14",
7, 7,
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#define FONTDATAMAX 4096 #define FONTDATAMAX 4096
static unsigned char fontdata_8x16[FONTDATAMAX] = { static const unsigned char fontdata_8x16[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -4621,7 +4621,7 @@ static unsigned char fontdata_8x16[FONTDATAMAX] = { ...@@ -4621,7 +4621,7 @@ static unsigned char fontdata_8x16[FONTDATAMAX] = {
}; };
struct font_desc font_vga_8x16 = { const struct font_desc font_vga_8x16 = {
VGA8x16_IDX, VGA8x16_IDX,
"VGA8x16", "VGA8x16",
8, 8,
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#define FONTDATAMAX 2048 #define FONTDATAMAX 2048
static unsigned char fontdata_8x8[FONTDATAMAX] = { static const unsigned char fontdata_8x8[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -2573,7 +2573,7 @@ static unsigned char fontdata_8x8[FONTDATAMAX] = { ...@@ -2573,7 +2573,7 @@ static unsigned char fontdata_8x8[FONTDATAMAX] = {
}; };
struct font_desc font_vga_8x8 = { const struct font_desc font_vga_8x8 = {
VGA8x8_IDX, VGA8x8_IDX,
"VGA8x8", "VGA8x8",
8, 8,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include <linux/config.h> #include <linux/config.h>
#include <linux/font.h> #include <linux/font.h>
static unsigned char acorndata_8x8[] = { static const unsigned char acorndata_8x8[] = {
/* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */ /* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */
/* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */ /* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */
/* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */ /* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */
...@@ -262,7 +262,7 @@ static unsigned char acorndata_8x8[] = { ...@@ -262,7 +262,7 @@ static unsigned char acorndata_8x8[] = {
/* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
struct font_desc font_acorn_8x8 = { const struct font_desc font_acorn_8x8 = {
ACORN8x8_IDX, ACORN8x8_IDX,
"Acorn8x8", "Acorn8x8",
8, 8,
......
...@@ -43,7 +43,7 @@ __END__; ...@@ -43,7 +43,7 @@ __END__;
#define FONTDATAMAX 1536 #define FONTDATAMAX 1536
static unsigned char fontdata_mini_4x6[FONTDATAMAX] = { static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = {
/*{*/ /*{*/
/* Char 0: ' ' */ /* Char 0: ' ' */
...@@ -2147,7 +2147,7 @@ static unsigned char fontdata_mini_4x6[FONTDATAMAX] = { ...@@ -2147,7 +2147,7 @@ static unsigned char fontdata_mini_4x6[FONTDATAMAX] = {
/*}*/ /*}*/
}; };
struct font_desc font_mini_4x6 = { const struct font_desc font_mini_4x6 = {
MINI4x6_IDX, MINI4x6_IDX,
"MINI4x6", "MINI4x6",
4, 4,
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#define FONTDATAMAX 2048 #define FONTDATAMAX 2048
static unsigned char fontdata_pearl8x8[FONTDATAMAX] = { static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, /* 00000000 */ 0x00, /* 00000000 */
...@@ -2577,7 +2577,7 @@ static unsigned char fontdata_pearl8x8[FONTDATAMAX] = { ...@@ -2577,7 +2577,7 @@ static unsigned char fontdata_pearl8x8[FONTDATAMAX] = {
}; };
struct font_desc font_pearl_8x8 = { const struct font_desc font_pearl_8x8 = {
PEARL8x8_IDX, PEARL8x8_IDX,
"PEARL8x8", "PEARL8x8",
8, 8,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define FONTDATAMAX 11264 #define FONTDATAMAX 11264
static unsigned char fontdata_sun12x22[FONTDATAMAX] = { static const unsigned char fontdata_sun12x22[FONTDATAMAX] = {
/* 0 0x00 '^@' */ /* 0 0x00 '^@' */
0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */
...@@ -6151,7 +6151,7 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { ...@@ -6151,7 +6151,7 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = {
}; };
struct font_desc font_sun_12x22 = { const struct font_desc font_sun_12x22 = {
SUN12x22_IDX, SUN12x22_IDX,
"SUN12x22", "SUN12x22",
12, 12,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define FONTDATAMAX 4096 #define FONTDATAMAX 4096
static unsigned char fontdata_sun8x16[FONTDATAMAX] = { static const unsigned char fontdata_sun8x16[FONTDATAMAX] = {
/* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00,
/* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00,
...@@ -261,7 +261,7 @@ static unsigned char fontdata_sun8x16[FONTDATAMAX] = { ...@@ -261,7 +261,7 @@ static unsigned char fontdata_sun8x16[FONTDATAMAX] = {
/* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
}; };
struct font_desc font_sun_8x16 = { const struct font_desc font_sun_8x16 = {
SUN8x16_IDX, SUN8x16_IDX,
"SUN8x16", "SUN8x16",
8, 8,
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#define NO_FONTS #define NO_FONTS
static struct font_desc *fonts[] = { static const struct font_desc *fonts[] = {
#ifdef CONFIG_FONT_8x8 #ifdef CONFIG_FONT_8x8
#undef NO_FONTS #undef NO_FONTS
&font_vga_8x8, &font_vga_8x8,
...@@ -84,7 +84,7 @@ static struct font_desc *fonts[] = { ...@@ -84,7 +84,7 @@ static struct font_desc *fonts[] = {
* *
*/ */
struct font_desc *find_font(char *name) const struct font_desc *find_font(const char *name)
{ {
unsigned int i; unsigned int i;
...@@ -108,10 +108,10 @@ struct font_desc *find_font(char *name) ...@@ -108,10 +108,10 @@ struct font_desc *find_font(char *name)
* *
*/ */
struct font_desc *get_default_font(int xres, int yres) const struct font_desc *get_default_font(int xres, int yres)
{ {
int i, c, cc; int i, c, cc;
struct font_desc *f, *g; const struct font_desc *f, *g;
g = NULL; g = NULL;
cc = -10000; cc = -10000;
...@@ -138,7 +138,6 @@ struct font_desc *get_default_font(int xres, int yres) ...@@ -138,7 +138,6 @@ struct font_desc *get_default_font(int xres, int yres)
return g; return g;
} }
EXPORT_SYMBOL(fonts);
EXPORT_SYMBOL(find_font); EXPORT_SYMBOL(find_font);
EXPORT_SYMBOL(get_default_font); EXPORT_SYMBOL(get_default_font);
......
...@@ -619,7 +619,7 @@ struct fb_tilemap { ...@@ -619,7 +619,7 @@ struct fb_tilemap {
__u32 height; /* height of each tile in scanlines */ __u32 height; /* height of each tile in scanlines */
__u32 depth; /* color depth of each tile */ __u32 depth; /* color depth of each tile */
__u32 length; /* number of tiles in the map */ __u32 length; /* number of tiles in the map */
__u8 *data; /* actual tile map: a bitmap array, packed const __u8 *data; /* actual tile map: a bitmap array, packed
to the nearest byte */ to the nearest byte */
}; };
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
struct font_desc { struct font_desc {
int idx; int idx;
char *name; const char *name;
int width, height; int width, height;
void *data; const void *data;
int pref; int pref;
}; };
...@@ -32,7 +32,7 @@ struct font_desc { ...@@ -32,7 +32,7 @@ struct font_desc {
#define ACORN8x8_IDX 8 #define ACORN8x8_IDX 8
#define MINI4x6_IDX 9 #define MINI4x6_IDX 9
extern struct font_desc font_vga_8x8, extern const struct font_desc font_vga_8x8,
font_vga_8x16, font_vga_8x16,
font_pearl_8x8, font_pearl_8x8,
font_vga_6x11, font_vga_6x11,
...@@ -45,11 +45,11 @@ extern struct font_desc font_vga_8x8, ...@@ -45,11 +45,11 @@ extern struct font_desc font_vga_8x8,
/* Find a font with a specific name */ /* Find a font with a specific name */
extern struct font_desc *find_font(char *name); extern const struct font_desc *find_font(const char *name);
/* Get the default font for a specific screen size */ /* Get the default font for a specific screen size */
extern struct font_desc *get_default_font(int xres, int yres); extern const struct font_desc *get_default_font(int xres, int yres);
/* Max. length for the name of a predefined font */ /* Max. length for the name of a predefined font */
#define MAX_FONT_NAME 32 #define MAX_FONT_NAME 32
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册