mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
keyhandler: drop regs parameter from handle_keyregs()
In preparation for further removal of regs parameters, drop it here. In the two places where it's actually needed, retrieve IRQ context if available, or else guest context. Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
ba3c8373cd
commit
feb338d843
4 files changed
+18
-22
No files matched your search
+11
-14
@@ -73,12 +73,12 @@ static struct keyhandler {
|
||||
|
||||
static void cf_check keypress_action(void *unused)
|
||||
{
|
||||
handle_keypress(keypress_key, NULL);
|
||||
handle_keypress(keypress_key, true);
|
||||
}
|
||||
|
||||
static DECLARE_TASKLET(keypress_tasklet, keypress_action, NULL);
|
||||
|
||||
void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
|
||||
void handle_keypress(unsigned char key, bool need_context)
|
||||
{
|
||||
struct keyhandler *h;
|
||||
|
||||
@@ -88,7 +88,7 @@ void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
|
||||
if ( !in_irq() || h->irq_callback )
|
||||
{
|
||||
console_start_log_everything();
|
||||
h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);
|
||||
h->irq_callback ? h->irq_fn(key, need_context) : h->fn(key);
|
||||
console_end_log_everything();
|
||||
}
|
||||
else
|
||||
@@ -169,7 +169,7 @@ void cf_check dump_execstate(struct cpu_user_regs *regs)
|
||||
}
|
||||
|
||||
static void cf_check dump_registers(
|
||||
unsigned char key, struct cpu_user_regs *regs)
|
||||
unsigned char key, bool need_context)
|
||||
{
|
||||
unsigned int cpu;
|
||||
|
||||
@@ -182,8 +182,8 @@ static void cf_check dump_registers(
|
||||
cpumask_copy(&dump_execstate_mask, &cpu_online_map);
|
||||
|
||||
/* Get local execution state out immediately, in case we get stuck. */
|
||||
if ( regs )
|
||||
dump_execstate(regs);
|
||||
if ( !need_context )
|
||||
dump_execstate(get_irq_regs() ?: guest_cpu_user_regs());
|
||||
else
|
||||
run_in_exception_handler(dump_execstate);
|
||||
|
||||
@@ -245,8 +245,7 @@ static void cf_check dump_hwdom_registers(unsigned char key)
|
||||
}
|
||||
}
|
||||
|
||||
static void cf_check reboot_machine(
|
||||
unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check reboot_machine(unsigned char key, bool unused)
|
||||
{
|
||||
printk("'%c' pressed -> rebooting machine\n", key);
|
||||
machine_restart(0);
|
||||
@@ -474,8 +473,7 @@ static void cf_check run_all_nonirq_keyhandlers(void *unused)
|
||||
static DECLARE_TASKLET(run_all_keyhandlers_tasklet,
|
||||
run_all_nonirq_keyhandlers, NULL);
|
||||
|
||||
static void cf_check run_all_keyhandlers(
|
||||
unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check run_all_keyhandlers(unsigned char key, bool need_context)
|
||||
{
|
||||
struct keyhandler *h;
|
||||
unsigned int k;
|
||||
@@ -491,7 +489,7 @@ static void cf_check run_all_keyhandlers(
|
||||
if ( !h->irq_fn || !h->diagnostic || !h->irq_callback )
|
||||
continue;
|
||||
printk("[%c: %s]\n", k, h->desc);
|
||||
h->irq_fn(k, regs);
|
||||
h->irq_fn(k, need_context);
|
||||
}
|
||||
|
||||
watchdog_enable();
|
||||
@@ -500,8 +498,7 @@ static void cf_check run_all_keyhandlers(
|
||||
tasklet_schedule(&run_all_keyhandlers_tasklet);
|
||||
}
|
||||
|
||||
static void cf_check do_toggle_alt_key(
|
||||
unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check do_toggle_alt_key(unsigned char key, bool unused)
|
||||
{
|
||||
alt_key_handling = !alt_key_handling;
|
||||
printk("'%c' pressed -> using %s key handling\n", key,
|
||||
@@ -566,7 +563,7 @@ void keyhandler_crash_action(enum crash_reason reason)
|
||||
if ( *action == '+' )
|
||||
mdelay(10);
|
||||
else
|
||||
handle_keypress(*action, NULL);
|
||||
handle_keypress(*action, true);
|
||||
action++;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -134,7 +134,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
|
||||
{
|
||||
if ( copy_from_guest_offset(&c, op->u.debug_keys.keys, i, 1) )
|
||||
goto out;
|
||||
handle_keypress(c, guest_cpu_user_regs());
|
||||
handle_keypress(c, false);
|
||||
}
|
||||
ret = 0;
|
||||
copyback = 0;
|
||||
|
||||
@@ -279,7 +279,7 @@ static int *__read_mostly upper_thresh_adj = &xenlog_upper_thresh;
|
||||
static int *__read_mostly lower_thresh_adj = &xenlog_lower_thresh;
|
||||
static const char *__read_mostly thresh_adj = "standard";
|
||||
|
||||
static void cf_check do_toggle_guest(unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check do_toggle_guest(unsigned char key, bool unused)
|
||||
{
|
||||
if ( upper_thresh_adj == &xenlog_upper_thresh )
|
||||
{
|
||||
@@ -306,13 +306,13 @@ static void do_adj_thresh(unsigned char key)
|
||||
loglvl_str(*upper_thresh_adj));
|
||||
}
|
||||
|
||||
static void cf_check do_inc_thresh(unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check do_inc_thresh(unsigned char key, bool unused)
|
||||
{
|
||||
++*lower_thresh_adj;
|
||||
do_adj_thresh(key);
|
||||
}
|
||||
|
||||
static void cf_check do_dec_thresh(unsigned char key, struct cpu_user_regs *regs)
|
||||
static void cf_check do_dec_thresh(unsigned char key, bool unused)
|
||||
{
|
||||
if ( *lower_thresh_adj )
|
||||
--*lower_thresh_adj;
|
||||
@@ -531,7 +531,7 @@ static void __serial_rx(char c, struct cpu_user_regs *regs)
|
||||
switch ( console_rx )
|
||||
{
|
||||
case 0:
|
||||
return handle_keypress(c, regs);
|
||||
return handle_keypress(c, false);
|
||||
|
||||
case 1:
|
||||
/*
|
||||
|
||||
@@ -24,9 +24,8 @@ typedef void (keyhandler_fn_t)(unsigned char key);
|
||||
*
|
||||
* Called in hardirq context with interrupts disabled.
|
||||
*/
|
||||
struct cpu_user_regs;
|
||||
typedef void (irq_keyhandler_fn_t)(unsigned char key,
|
||||
struct cpu_user_regs *regs);
|
||||
bool need_context);
|
||||
|
||||
/* Initialize keytable with default handlers. */
|
||||
void initialize_keytable(void);
|
||||
@@ -46,7 +45,7 @@ void register_irq_keyhandler(unsigned char key,
|
||||
bool diagnostic);
|
||||
|
||||
/* Inject a keypress into the key-handling subsystem. */
|
||||
extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs);
|
||||
extern void handle_keypress(unsigned char key, bool need_context);
|
||||
|
||||
enum crash_reason {
|
||||
CRASHREASON_PANIC,
|
||||
|
||||