]> Joshua Wise's Git repositories - netwatch.git/commitdiff
another try
authorJoshua Wise <joshua@rebirth.joshuawise.com>
Fri, 12 Dec 2008 22:50:47 +0000 (17:50 -0500)
committerJoshua Wise <joshua@rebirth.joshuawise.com>
Fri, 12 Dec 2008 22:50:47 +0000 (17:50 -0500)
aseg-paging/main.c

index d41e8c2c09a7c7754142ae0601798dcf7b81445c..586935c723ca777919f8f0df49c1d60ab10e25db 100644 (file)
@@ -98,14 +98,15 @@ void timer_handler(smi_event_t ev)
        if (kbd_has_injected_scancode() && _inject_ready())
        {
                smi_disable_event(SMI_EVENT_DEVTRAP_KBC);
-               outputf("Injecting key");
-               /* Actually do the inject. */
-               outb(0x64, 0xD2);       /* "Inject, please!" */
-               while (inb(0x64) & 0x02)        /* Busy? */
-                       ;
-               outb(0x60, kbd_get_injected_scancode());        /* data */
-               while (inb(0x64) & 0x02)        /* wait for completion */
-                       ;
+               while (kbd_has_injected_scancode() && !(inb(0x64) & 0x01)) {
+                       int i = 1000;
+                       outb(0x64, 0xD2);       /* "Inject, please!" */
+                       while (inb(0x64) & 0x02)        /* Busy? */
+                               ;
+                       outb(0x60, kbd_get_injected_scancode());        /* data */
+                       while ((inb(0x64) & 0x02) && i--)       /* wait for completion */
+                               ;
+               }
                smi_enable_event(SMI_EVENT_DEVTRAP_KBC);
        } else if (kbd_has_injected_scancode())
                outputf("Would like to inject, but %d %d", _ibf_ready, _waiting_for_data);
This page took 0.029624 seconds and 4 git commands to generate.