]> sigrok.org Git - libsigrok.git/commit
serial: Only sleep when no characters are received.
authorDaniel Thompson <redacted>
Thu, 19 Sep 2013 15:39:24 +0000 (16:39 +0100)
committerBert Vermeulen <redacted>
Thu, 26 Sep 2013 12:57:37 +0000 (14:57 +0200)
commit5715e84fe3335e519148d7f6252b046598a982a8
treeeda28d62d9f055b1d0463900ccf3f545b13c9be3
parent1b142b78274d74563a084299a01ef1a92206356f
serial: Only sleep when no characters are received.

g_usleep(XX) sleeps for *at least* XX microseconds but may sleep for
longers (on older kernels the sleep will typically be 10000us). Thus
byte receive loops containing an unconditional sleep will perform
very poorly (for example it causes the scan in agilent-dmm to timeout
prematurely).

Even on modern kernels serial_readline() has a 2ms sleep per byte which
means it will read at a maximum rate of half a character per millisecond
(~4800baud).

This is fixed by only sleeping when read() returns no data.

Signed-off-by: Daniel Thompson <redacted>
hardware/common/serial.c