Input: implement SysRq as a separate input handler
Instead of keeping SysRq support inside of legacy keyboard driver split it out into a separate input handler (filter). This stops most SysRq input events from leaking into evdev clients (some events, such as first SysRq scancode - not keycode - event, are still leaked into both legacy keyboard and evdev). [martinez.javier@gmail.com: fix compile error when CONFIG_MAGIC_SYSRQ is not defined] Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
@@ -39,40 +39,33 @@ struct sysrq_key_op {
|
||||
|
||||
#ifdef CONFIG_MAGIC_SYSRQ
|
||||
|
||||
extern int sysrq_on(void);
|
||||
|
||||
/*
|
||||
* Do not use this one directly:
|
||||
*/
|
||||
extern int __sysrq_enabled;
|
||||
|
||||
/* Generic SysRq interface -- you may call it from any device driver, supplying
|
||||
* ASCII code of the key, pointer to registers and kbd/tty structs (if they
|
||||
* are available -- else NULL's).
|
||||
*/
|
||||
|
||||
void handle_sysrq(int key, struct tty_struct *tty);
|
||||
void __handle_sysrq(int key, struct tty_struct *tty, int check_mask);
|
||||
int register_sysrq_key(int key, struct sysrq_key_op *op);
|
||||
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
|
||||
struct sysrq_key_op *__sysrq_get_key_op(int key);
|
||||
|
||||
int sysrq_toggle_support(int enable_mask);
|
||||
|
||||
#else
|
||||
|
||||
static inline int sysrq_on(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int __reterr(void)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline void handle_sysrq(int key, struct tty_struct *tty)
|
||||
{
|
||||
}
|
||||
|
||||
#define register_sysrq_key(ig,nore) __reterr()
|
||||
#define unregister_sysrq_key(ig,nore) __reterr()
|
||||
static inline int register_sysrq_key(int key, struct sysrq_key_op *op)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int unregister_sysrq_key(int key, struct sysrq_key_op *op)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user