serial port canonical mode weirdness?

From: David L
Date: Wed Mar 31 2004 - 19:45:55 EST


When I configure a serial port for canonical mode (newtio.c_lflag = ICANON),
I get behavior that isn't what I'd expect. If I send >4095 characters that don't
contain an end-of-line and then an end of line, the number of characters read
is 1. If I then start sending shorter lines, one character is read for each
end-of-line that is sent. For example, if the limit was 10 instead of 4096, if the
received data was:

0123456789\n

The data returned by the driver would be:

0

(I would expect 0123456789\n to be returned)

Then if you send "A\n"
The data returned will be "1"

Then if you send "B\n"
The data returned will be "2"

And so on.

When it's in this state and you send "\n\n", it returns 4096 characters
and then starts acting like I would expect again.

I've also found that when it's in this state and you send
a few lines in rapid succession, the call to read will return 0
bytes and never returns any more good data.

Is this a kernel bug or an ignorant user? I might expect some
data to be lost if a buffer overruns, but I didn't expect this behavior.

Thanks:

David

_________________________________________________________________
MSN Toolbar provides one-click access to Hotmail from any Web page ? FREE download! http://toolbar.msn.com/go/onm00200413ave/direct/01/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/