Commit a29ccf6f823a84d89e1c7aaaf221cf7282022024
1 parent
1beee8dc8c
Exists in
master
and in
39 other branches
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>
Showing 5 changed files with 44 additions and 3 deletions Side-by-side Diff
drivers/char/Kconfig
... | ... | @@ -36,6 +36,14 @@ |
36 | 36 | If unsure, say Y, or else you won't be able to do much with your new |
37 | 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 | 47 | config VT_CONSOLE |
40 | 48 | bool "Support for console on virtual terminal" if EMBEDDED |
41 | 49 | depends on VT |
drivers/char/Makefile
... | ... | @@ -12,8 +12,8 @@ |
12 | 12 | obj-$(CONFIG_LEGACY_PTYS) += pty.o |
13 | 13 | obj-$(CONFIG_UNIX98_PTYS) += pty.o |
14 | 14 | obj-y += misc.o |
15 | -obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o consolemap.o \ | |
16 | - consolemap_deftbl.o selection.o keyboard.o | |
15 | +obj-$(CONFIG_VT) += vt_ioctl.o vc_screen.o selection.o keyboard.o | |
16 | +obj-$(CONFIG_CONSOLE_TRANSLATIONS) += consolemap.o consolemap_deftbl.o | |
17 | 17 | obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o |
18 | 18 | obj-$(CONFIG_AUDIT) += tty_audit.o |
19 | 19 | obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o |
drivers/char/vt.c
include/linux/consolemap.h
... | ... | @@ -3,6 +3,9 @@ |
3 | 3 | * |
4 | 4 | * Interface between console.c, selection.c and consolemap.c |
5 | 5 | */ |
6 | +#ifndef __LINUX_CONSOLEMAP_H__ | |
7 | +#define __LINUX_CONSOLEMAP_H__ | |
8 | + | |
6 | 9 | #define LAT1_MAP 0 |
7 | 10 | #define GRAF_MAP 1 |
8 | 11 | #define IBMPC_MAP 2 |
... | ... | @@ -10,6 +13,7 @@ |
10 | 13 | |
11 | 14 | #include <linux/types.h> |
12 | 15 | |
16 | +#ifdef CONFIG_CONSOLE_TRANSLATIONS | |
13 | 17 | struct vc_data; |
14 | 18 | |
15 | 19 | extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode); |
... | ... | @@ -18,4 +22,14 @@ |
18 | 22 | extern u32 conv_8bit_to_uni(unsigned char c); |
19 | 23 | extern int conv_uni_to_8bit(u32 uni); |
20 | 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__ */ |
include/linux/vt_kern.h
... | ... | @@ -12,6 +12,7 @@ |
12 | 12 | #include <linux/mutex.h> |
13 | 13 | #include <linux/console_struct.h> |
14 | 14 | #include <linux/mm.h> |
15 | +#include <linux/consolemap.h> | |
15 | 16 | |
16 | 17 | /* |
17 | 18 | * Presently, a lot of graphics programs do not restore the contents of |
... | ... | @@ -54,6 +55,7 @@ |
54 | 55 | struct tty_struct; |
55 | 56 | int tioclinux(struct tty_struct *tty, unsigned long arg); |
56 | 57 | |
58 | +#ifdef CONFIG_CONSOLE_TRANSLATIONS | |
57 | 59 | /* consolemap.c */ |
58 | 60 | |
59 | 61 | struct unimapinit; |
... | ... | @@ -70,6 +72,23 @@ |
70 | 72 | void con_free_unimap(struct vc_data *vc); |
71 | 73 | void con_protect_unimap(struct vc_data *vc, int rdonly); |
72 | 74 | int con_copy_unimap(struct vc_data *dst_vc, struct vc_data *src_vc); |
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 | |
73 | 92 | |
74 | 93 | /* vt.c */ |
75 | 94 | int vt_waitactive(int vt); |