From 40ab42ddca705bc0fedce6a933ef3b4787863445 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Wed, 2 May 2012 20:04:42 +0000 Subject: EmbeddedPkg/SerialDxe: Do not block UART when no data is available on the port Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13255 6f19259b-4bc3-4df7-8a09-765794883524 --- EmbeddedPkg/SerialDxe/SerialIo.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'EmbeddedPkg') diff --git a/EmbeddedPkg/SerialDxe/SerialIo.c b/EmbeddedPkg/SerialDxe/SerialIo.c index 59d904c192..ef4e6a1910 100644 --- a/EmbeddedPkg/SerialDxe/SerialIo.c +++ b/EmbeddedPkg/SerialDxe/SerialIo.c @@ -167,7 +167,7 @@ SerialWrite ( } /** - Writes data to a serial device. + Reads data from a serial device. @param This Protocol instance pointer. @param BufferSize On input, the size of the Buffer. On output, the amount of @@ -189,15 +189,16 @@ SerialRead ( ) { UINTN Count = 0; - + if (SerialPortPoll()) { Count = SerialPortRead (Buffer, *BufferSize); + } + + if (Count != *BufferSize) { *BufferSize = Count; - return (Count == 0) ? EFI_DEVICE_ERROR : EFI_SUCCESS; + return EFI_TIMEOUT; } - - // No data to return - *BufferSize = 0; + return EFI_SUCCESS; } -- cgit v1.2.3