Ticket #3636 (closed defect: duplicate)
Problems with serial -> pipe on Windows host
|Reported by:||TKreuzer||Owned by:|
I experienced the following problems with the serial port:
I am using ReactOS, which outputs debugging information on COM1 as plain text. So I setup a VM with COM1 as host pipe. When capturing this debugging info from the pipe, there are often characters missing. It gets worse if large amounts of text are sent on the port quickly. I tried different clients: One client I wrote myself, putty, IO Ninja. Always the same, although putty seemed to show the best results of all 3. The described method works flawlessly on VMware and QEMU with a pipe and on real hardware using a real serial cable or serial to usb. Reducing the guests BAUD rate improved the output but never to a satisfactory result.
The code of interest in ReactOS:
#define SER_LSR(x) ((PUCHAR)(x)+5) #define SER_THR(x) ((PUCHAR)(x)+0) #define SR_LSR_TBE 0x20
while ((READ_PORT_UCHAR(SER_LSR(ComPortBase)) & SR_LSR_TBE) == 0)
So it checks the Bit 5 (Empty Transmitter Holding Register) of the Line Status Register and waits until it's set. Then outputs the char on the data port.
I suspect that there is a buffer overrun, when VBox can't get all the data into the pipe quickly enough.