]> xenbits.xensource.com Git - xen.git/commitdiff
Revert "keyhandler: rework process of nonirq keyhandler"
authorJan Beulich <jbeulich@suse.com>
Wed, 26 Oct 2016 14:13:21 +0000 (16:13 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 26 Oct 2016 14:13:21 +0000 (16:13 +0200)
This reverts commit 610b4eda2ce2b87cccbc8f61bdec01052e54fc66.
It's not useful without ed7e33747d, which got reverted already.

xen/common/keyhandler.c
xen/common/sysctl.c
xen/drivers/char/console.c
xen/include/xen/keyhandler.h

index 2f7c364d871a197d5bfe4d4b77cc228eb2675dd6..16de6e80904b3b7bc85224529631855cf5c615a0 100644 (file)
@@ -75,22 +75,19 @@ static struct keyhandler {
 
 static void keypress_action(unsigned long unused)
 {
-    console_start_log_everything();
-    key_table[keypress_key].fn(keypress_key);
-    console_end_log_everything();
+    handle_keypress(keypress_key, NULL);
 }
 
 static DECLARE_TASKLET(keypress_tasklet, keypress_action, 0);
 
-void handle_keypress(unsigned char key, struct cpu_user_regs *regs,
-                     bool force_tasklet)
+void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
 {
     struct keyhandler *h;
 
     if ( key >= ARRAY_SIZE(key_table) || !(h = &key_table[key])->fn )
         return;
 
-    if ( h->irq_callback || !force_tasklet )
+    if ( !in_irq() || h->irq_callback )
     {
         console_start_log_everything();
         h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);
index 1eb7baddc01f0631d55a33c3ee06eb577274550f..8aea6efe7af8768d74993eb5f3964e0b2fdb26d3 100644 (file)
@@ -136,7 +136,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(), false);
+            handle_keypress(c, guest_cpu_user_regs());
         }
         ret = 0;
         copyback = 0;
index b0f74cecadfef2ab45996ca18ac84fe0779ed78f..55ae31aaa672e4ae0e6814e135d2bde6fa39c13a 100644 (file)
@@ -347,7 +347,7 @@ static void switch_serial_input(void)
 static void __serial_rx(char c, struct cpu_user_regs *regs)
 {
     if ( xen_rx )
-        return handle_keypress(c, regs, !in_irq());
+        return handle_keypress(c, regs);
 
     /* Deliver input to guest buffer, unless it is already full. */
     if ( (serial_rx_prod-serial_rx_cons) != SERIAL_RX_SIZE )
index fe32d8af2689255d58cf3f02b8ba746e8c23d4d0..06c05c8723c598d1eaf252757590cd49b4ba1d5d 100644 (file)
@@ -46,8 +46,7 @@ void register_irq_keyhandler(unsigned char key,
                              bool_t diagnostic);
 
 /* Inject a keypress into the key-handling subsystem. */
-extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs,
-                            bool force_tasklet);
+extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs);
 
 /* Scratch space is available for use of any keyhandler. */
 extern char keyhandler_scratch[1024];