|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] Drop characters if an asynchronous serial
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1208956655 -3600
# Node ID 64c0014ae75787eddb7da44c9cbbbed53e85385f
# Parent a7ddd6bcd564965af54a9df236d89503a76923e1
Drop characters if an asynchronous serial tx buffer fills up.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
xen/drivers/char/serial.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff -r a7ddd6bcd564 -r 64c0014ae757 xen/drivers/char/serial.c
--- a/xen/drivers/char/serial.c Wed Apr 23 14:06:51 2008 +0100
+++ b/xen/drivers/char/serial.c Wed Apr 23 14:17:35 2008 +0100
@@ -15,6 +15,9 @@
#include <xen/mm.h>
#include <xen/serial.h>
+/* Never drop characters, even if the async transmit buffer fills. */
+/* #define SERIAL_NEVER_DROP_CHARS 1 */
+
unsigned int serial_txbufsz = 16384;
static void __init parse_serial_tx_buffer(const char *s)
{
@@ -91,22 +94,24 @@ void serial_tx_interrupt(struct serial_p
static void __serial_putc(struct serial_port *port, char c)
{
- int i;
-
if ( (port->txbuf != NULL) && !port->sync )
{
/* Interrupt-driven (asynchronous) transmitter. */
+#ifdef SERIAL_NEVER_DROP_CHARS
if ( (port->txbufp - port->txbufc) == serial_txbufsz )
{
- /* Buffer is full: we spin, but could alternatively drop chars. */
+ /* Buffer is full: we spin waiting for space to appear. */
+ int i;
while ( !port->driver->tx_empty(port) )
cpu_relax();
for ( i = 0; i < port->tx_fifo_size; i++ )
port->driver->putc(
port, port->txbuf[mask_serial_txbuf_idx(port->txbufc++)]);
port->txbuf[mask_serial_txbuf_idx(port->txbufp++)] = c;
- }
- else if ( ((port->txbufp - port->txbufc) == 0) &&
+ return;
+ }
+#endif
+ if ( ((port->txbufp - port->txbufc) == 0) &&
port->driver->tx_empty(port) )
{
/* Buffer and UART FIFO are both empty. */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] Drop characters if an asynchronous serial tx buffer fills up.,
Xen patchbot-unstable <=
|
|
|
|
|