]> err.no Git - linux-2.6/commitdiff
[PATCH] hvc_console: Dont always kick the poll thread in interrupt
authorMilton Miller <miltonm@bga.com>
Fri, 8 Jul 2005 00:56:18 +0000 (17:56 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 8 Jul 2005 01:23:38 +0000 (18:23 -0700)
Have the hvc console code try to pull characters immediately when receiving an
interrupt, and kick the poll thread only if the immediate poll indicates it
needed a call back to do more work.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/char/hvc_console.c

index 4b776f4eb467b57707d2ab1f02532d41daa775ac..46508a737064a49c3c6452ae3a0b4fcc8f7f21e9 100644 (file)
@@ -254,13 +254,17 @@ static void hvc_kick(void)
        wake_up_process(hvc_task);
 }
 
+static int hvc_poll(struct hvc_struct *hp);
+
 /*
  * NOTE: This API isn't used if the console adapter doesn't support interrupts.
  * In this case the console is poll driven.
  */
 static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
 {
-       hvc_kick();
+       /* if hvc_poll request a repoll, then kick the hvcd thread */
+       if (hvc_poll(dev_instance))
+               hvc_kick();
        return IRQ_HANDLED;
 }
 
@@ -598,8 +602,8 @@ static int hvc_poll(struct hvc_struct *hp)
 
                /*
                 * Account for the total amount read in one loop, and if above
-                * 64 bytes, we do a quick schedule loop to let the tty grok the
-                * data and eventually throttle us.
+                * 64 bytes, we do a quick schedule loop to let the tty grok
+                * the data and eventually throttle us.
                 */
                read_total += n;
                if (read_total >= 64) {