diff options
| author | David Woodhouse <dwmw2@infradead.org> | 2008-06-03 09:59:40 -0400 |
|---|---|---|
| committer | David Woodhouse <dwmw2@infradead.org> | 2008-06-04 09:56:12 -0400 |
| commit | a29ccf6f823a84d89e1c7aaaf221cf7282022024 (patch) | |
| tree | e65d84633a98d46ef81373e5d190c6cdc0e4282b | |
| parent | 1beee8dc8cf58e3f605bd7b34d7a39939be7d8d2 (diff) | |
Make console charset translation optional
By turning off the new CONSOLE_TRANSLATIONS option and dropping the
associated code and tables from the kernel, we can save about 7KiB.
Taken from linux-tiny project by Tim Bird and mangled further by dwmw2.
Signed-off-by: Tim Bird <tim.bird@am.sony.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
| -rw-r--r-- | drivers/char/Kconfig | 8 | ||||
| -rw-r--r-- | drivers/char/Makefile | 4 | ||||
| -rw-r--r-- | drivers/char/vt.c | 2 | ||||
| -rw-r--r-- | include/linux/consolemap.h | 14 | ||||
| -rw-r--r-- | include/linux/vt_kern.h | 19 |
5 files changed, 44 insertions, 3 deletions
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 595a925c62a9..b7f7371dee73 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig | |||
| @@ -36,6 +36,14 @@ config VT | |||
| 36 | If unsure, say Y, or else you won't be able to do much with your new | 36 | If unsure, say Y, or else you won't be able to do much with your new |
| 37 | shiny Linux system :-) | 37 | shiny Linux system :-) |
| 38 | 38 | ||
| 39 | config CONSOLE_TRANSLATIONS | ||
| 40 | depends on VT | ||
| 41 | default y | ||
| 42 | bool "Enable character translations in console" if EMBEDDED | ||
| 43 | ---help--- | ||
| 44 | This enables support for font mapping and Unicode translation | ||
| 45 | on virtual consoles. | ||
| 46 | |||
| 39 | config VT_CONSOLE | 47 | config VT_CONSOLE |
| 40 | bool "Support for console on virtual terminal" if EMBEDDED | 48 | bool "Support for console on virtual terminal" if EMBEDDED |
| 41 | depends on VT | 49 | depends on VT |
diff --git a/drivers/char/Makefile b/drivers/char/Makefile index 4c1c584e9eb6..6ef173cab144 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile | |||
| @@ -12,8 +12,8 @@ obj-y += mem.o random.o tty_io.o n_tty.o tty_ioctl.o | |||
| 12 | obj-$(CONFIG_LEGACY_PTYS) += pty.o | 12 | obj-$(CONFIG_LEGACY_PTYS) += pty.o |
| 13 | obj-$(CONFIG_UNIX98_PTYS) += pty.o | 13 | obj-$(CONFIG_UNIX98_PTYS) += pty.o |
| 14 | obj-y += misc.o | 14 | obj-y += misc.o |
| 15 | obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o consolemap.o \ | 15 | obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o selection.o keyboard.o |
| 16 | consolemap_deftbl.o selection.o keyboard.o | 16 | obj-$(CONFIG_CONSOLE_TRANSLATIONS) += consolemap.o consolemap_deftbl.o |
| 17 | obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o | 17 | obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o |
| 18 | obj-$(CONFIG_AUDIT) += tty_audit.o | 18 | obj-$(CONFIG_AUDIT) += tty_audit.o |
| 19 | obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o | 19 | obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o |
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index fa1ffbf2c621..18b7fb06dace 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
| @@ -2208,7 +2208,7 @@ rescan_last_byte: | |||
| 2208 | c = 0xfffd; | 2208 | c = 0xfffd; |
| 2209 | tc = c; | 2209 | tc = c; |
| 2210 | } else { /* no utf or alternate charset mode */ | 2210 | } else { /* no utf or alternate charset mode */ |
| 2211 | tc = vc->vc_translate[vc->vc_toggle_meta ? (c | 0x80) : c]; | 2211 | tc = vc_translate(vc, c); |
| 2212 | } | 2212 | } |
| 2213 | 2213 | ||
| 2214 | param.c = tc; | 2214 | param.c = tc; |
diff --git a/include/linux/consolemap.h b/include/linux/consolemap.h index e2bf7e5db39a..c4811da1338b 100644 --- a/include/linux/consolemap.h +++ b/include/linux/consolemap.h | |||
| @@ -3,6 +3,9 @@ | |||
| 3 | * | 3 | * |
| 4 | * Interface between console.c, selection.c and consolemap.c | 4 | * Interface between console.c, selection.c and consolemap.c |
| 5 | */ | 5 | */ |
| 6 | #ifndef __LINUX_CONSOLEMAP_H__ | ||
| 7 | #define __LINUX_CONSOLEMAP_H__ | ||
| 8 | |||
| 6 | #define LAT1_MAP 0 | 9 | #define LAT1_MAP 0 |
| 7 | #define GRAF_MAP 1 | 10 | #define GRAF_MAP 1 |
| 8 | #define IBMPC_MAP 2 | 11 | #define IBMPC_MAP 2 |
| @@ -10,6 +13,7 @@ | |||
| 10 | 13 | ||
| 11 | #include <linux/types.h> | 14 | #include <linux/types.h> |
| 12 | 15 | ||
| 16 | #ifdef CONFIG_CONSOLE_TRANSLATIONS | ||
| 13 | struct vc_data; | 17 | struct vc_data; |
| 14 | 18 | ||
| 15 | extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode); | 19 | extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode); |
| @@ -18,3 +22,13 @@ extern int conv_uni_to_pc(struct vc_data *conp, long ucs); | |||
| 18 | extern u32 conv_8bit_to_uni(unsigned char c); | 22 | extern u32 conv_8bit_to_uni(unsigned char c); |
| 19 | extern int conv_uni_to_8bit(u32 uni); | 23 | extern int conv_uni_to_8bit(u32 uni); |
| 20 | void console_map_init(void); | 24 | void console_map_init(void); |
| 25 | #else | ||
| 26 | #define inverse_translate(conp, glyph, uni) ((uint16_t)glyph) | ||
| 27 | #define set_translate(m, vc) ((unsigned short *)NULL) | ||
| 28 | #define conv_uni_to_pc(conp, ucs) ((int) (ucs > 0xff ? -1: ucs)) | ||
| 29 | #define conv_8bit_to_uni(c) ((uint32_t)(c)) | ||
| 30 | #define conv_uni_to_8bit(c) ((int) ((c) & 0xff)) | ||
| 31 | #define console_map_init(c) do { ; } while (0) | ||
| 32 | #endif /* CONFIG_CONSOLE_TRANSLATIONS */ | ||
| 33 | |||
| 34 | #endif /* __LINUX_CONSOLEMAP_H__ */ | ||
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h index 9448ffbdcbf6..14c0e91be9b5 100644 --- a/include/linux/vt_kern.h +++ b/include/linux/vt_kern.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/mutex.h> | 12 | #include <linux/mutex.h> |
| 13 | #include <linux/console_struct.h> | 13 | #include <linux/console_struct.h> |
| 14 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
| 15 | #include <linux/consolemap.h> | ||
| 15 | 16 | ||
| 16 | /* | 17 | /* |
| 17 | * Presently, a lot of graphics programs do not restore the contents of | 18 | * Presently, a lot of graphics programs do not restore the contents of |
| @@ -54,6 +55,7 @@ void redraw_screen(struct vc_data *vc, int is_switch); | |||
| 54 | struct tty_struct; | 55 | struct tty_struct; |
| 55 | int tioclinux(struct tty_struct *tty, unsigned long arg); | 56 | int tioclinux(struct tty_struct *tty, unsigned long arg); |
| 56 | 57 | ||
| 58 | #ifdef CONFIG_CONSOLE_TRANSLATIONS | ||
| 57 | /* consolemap.c */ | 59 | /* consolemap.c */ |
| 58 | 60 | ||
| 59 | struct unimapinit; | 61 | struct unimapinit; |
| @@ -71,6 +73,23 @@ void con_free_unimap(struct vc_data *vc); | |||
| 71 | void con_protect_unimap(struct vc_data *vc, int rdonly); | 73 | void con_protect_unimap(struct vc_data *vc, int rdonly); |
| 72 | int con_copy_unimap(struct vc_data *dst_vc, struct vc_data *src_vc); | 74 | int con_copy_unimap(struct vc_data *dst_vc, struct vc_data *src_vc); |
| 73 | 75 | ||
| 76 | #define vc_translate(vc, c) ((vc)->vc_translate[(c) | \ | ||
| 77 | (vc)->vc_toggle_meta ? 0x80 : 0]) | ||
| 78 | #else | ||
| 79 | #define con_set_trans_old(arg) (0) | ||
| 80 | #define con_get_trans_old(arg) (-EINVAL) | ||
| 81 | #define con_set_trans_new(arg) (0) | ||
| 82 | #define con_get_trans_new(arg) (-EINVAL) | ||
| 83 | #define con_clear_unimap(vc, ui) (0) | ||
| 84 | #define con_set_unimap(vc, ct, list) (0) | ||
| 85 | #define con_set_default_unimap(vc) (0) | ||
| 86 | #define con_copy_unimap(d, s) (0) | ||
| 87 | #define con_get_unimap(vc, ct, uct, list) (-EINVAL) | ||
| 88 | #define con_free_unimap(vc) do { ; } while (0) | ||
| 89 | |||
| 90 | #define vc_translate(vc, c) (c) | ||
| 91 | #endif | ||
| 92 | |||
| 74 | /* vt.c */ | 93 | /* vt.c */ |
| 75 | int vt_waitactive(int vt); | 94 | int vt_waitactive(int vt); |
| 76 | void change_console(struct vc_data *new_vc); | 95 | void change_console(struct vc_data *new_vc); |
