mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-06 02:24:14 +08:00
aa0f2dd4de
The Linux Virtual Terminal (VT) layer provides a default keymap which is compiled when VT layer is enabled. But at the same time we are also compiling the EBCDIC keymap and this causes the linker to complain. So let's rename the EBCDIC keymap variables to prevent linker conflict. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <f670a2698d2372e1e990c48a29334ffe894804b1.1519315352.git.alifm@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* ebcdic keycode functions for s390 console drivers
|
|
*
|
|
* Copyright IBM Corp. 2003
|
|
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
|
*/
|
|
|
|
#include <linux/tty.h>
|
|
#include <linux/tty_flip.h>
|
|
#include <linux/keyboard.h>
|
|
|
|
#define NR_FN_HANDLER 20
|
|
|
|
struct kbd_data;
|
|
|
|
extern int ebc_funcbufsize, ebc_funcbufleft;
|
|
extern char *ebc_func_table[MAX_NR_FUNC];
|
|
extern char ebc_func_buf[];
|
|
extern char *ebc_funcbufptr;
|
|
extern unsigned int ebc_keymap_count;
|
|
|
|
extern struct kbdiacruc ebc_accent_table[];
|
|
extern unsigned int ebc_accent_table_size;
|
|
extern unsigned short *ebc_key_maps[MAX_NR_KEYMAPS];
|
|
extern unsigned short ebc_plain_map[NR_KEYS];
|
|
|
|
typedef void (fn_handler_fn)(struct kbd_data *);
|
|
|
|
/*
|
|
* FIXME: explain key_maps tricks.
|
|
*/
|
|
|
|
struct kbd_data {
|
|
struct tty_port *port;
|
|
unsigned short **key_maps;
|
|
char **func_table;
|
|
fn_handler_fn **fn_handler;
|
|
struct kbdiacruc *accent_table;
|
|
unsigned int accent_table_size;
|
|
unsigned int diacr;
|
|
unsigned short sysrq;
|
|
};
|
|
|
|
struct kbd_data *kbd_alloc(void);
|
|
void kbd_free(struct kbd_data *);
|
|
void kbd_ascebc(struct kbd_data *, unsigned char *);
|
|
|
|
void kbd_keycode(struct kbd_data *, unsigned int);
|
|
int kbd_ioctl(struct kbd_data *, unsigned int, unsigned long);
|
|
|
|
/*
|
|
* Helper Functions.
|
|
*/
|
|
static inline void
|
|
kbd_put_queue(struct tty_port *port, int ch)
|
|
{
|
|
tty_insert_flip_char(port, ch, 0);
|
|
tty_schedule_flip(port);
|
|
}
|
|
|
|
static inline void
|
|
kbd_puts_queue(struct tty_port *port, char *cp)
|
|
{
|
|
while (*cp)
|
|
tty_insert_flip_char(port, *cp++, 0);
|
|
tty_schedule_flip(port);
|
|
}
|