| 
         
xen-devel
[Xen-devel] Re: [RFC PATCH 27/33] Add the Xen virtual console	driver.
 
| 
To:  | 
Arjan van de Ven <arjan@xxxxxxxxxxxxx> | 
 
| 
Subject:  | 
[Xen-devel] Re: [RFC PATCH 27/33] Add the Xen virtual console	driver. | 
 
| 
From:  | 
Keir Fraser <Keir.Fraser@xxxxxxxxxxxx> | 
 
| 
Date:  | 
Tue, 18 Jul 2006 11:31:42 +0100 | 
 
| 
Cc:  | 
Andrew Morton <akpm@xxxxxxxx>, Jeremy Fitzhardinge <jeremy@xxxxxxxx>,	xen-devel@xxxxxxxxxxxxxxxxxxx, Ian Pratt <ian.pratt@xxxxxxxxxxxxx>,	linux-kernel@xxxxxxxxxxxxxxx, Chris Wright <chrisw@xxxxxxxxxxxx>,	virtualization@xxxxxxxxxxxxxx | 
 
| 
Delivery-date:  | 
Tue, 18 Jul 2006 03:32:19 -0700 | 
 
| 
Envelope-to:  | 
www-data@xxxxxxxxxxxxxxxxxx | 
 
| 
In-reply-to:  | 
<1153218278.3038.43.camel@xxxxxxxxxxxxxxxxxxxxx> | 
 
| 
List-help:  | 
<mailto:xen-devel-request@lists.xensource.com?subject=help> | 
 
| 
List-id:  | 
Xen developer discussion <xen-devel.lists.xensource.com> | 
 
| 
List-post:  | 
<mailto:xen-devel@lists.xensource.com> | 
 
| 
List-subscribe:  | 
<http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>,	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe> | 
 
| 
List-unsubscribe:  | 
<http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>,	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> | 
 
| 
References:  | 
<20060718091807.467468000@xxxxxxxxxxxx>	<20060718091956.653901000@xxxxxxxxxxxx>	<1153218278.3038.43.camel@xxxxxxxxxxxxxxxxxxxxx> | 
 
| 
Sender:  | 
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx | 
 
 
 
On 18 Jul 2006, at 11:24, Arjan van de Ven wrote:
 
hmm somehow I find this code scary; we had similar code recently
elsewhere where this turned out to be a real issue; you now sleep for
"1" time, so you sleep for a fixed time if you aren't getting wakeups,
but if you are getting wakeups your code is upside down, I would expect
it to look like
+       set_current_state(TASK_INTERRUPTIBLE);
+       while (DRV(tty->driver)->chars_in_buffer(tty))
+               schedule_timeout(1);
+               if (signal_pending(current))
+                       break;
+               if (timeout && time_after(jiffies, orig_jiffies + timeout))
+                       break;
+               set_current_state(TASK_INTERRUPTIBLE);
+       }
instead, so that you don't have the wakeup race..
 
 
 There's no wakeup signal, so no possibility of a wakeup race. That's 
why we schedule_timeout() instead of wait_event() or similar. This code 
is only used to flush the console when the kernel crashes, so we can 
get the full oops, so waiting a little bit too long is acceptable.
 Your suggested change is perhaps more idiomatic though, and less 
jarring for reviewers. :-)
 Thanks for your comments by the way. Reviewing lots of patches isn't 
much fun.
 -- Keir
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
 | 
    |