commit f40c7be4d1c9a95cd0726ccceb949afd1a03b6a9
parent e22b6bcefd83056bc346d8bb75e98c4699a173cd
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date: Tue, 6 Nov 2018 11:49:50 +0000
[uart] Add uartread() and do some error checking for uartwrite()
Change-Id: I700b61629961b2e0156125e048efa4ddc1f6a91a
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
Diffstat:
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/uart.c b/drivers/uart.c
@@ -85,12 +85,24 @@ uartputc(int c)
}
int
+uartread(char *buf, size_t siz)
+{
+ size_t i;
+
+ for (i = 0; i < siz; i++)
+ if ((buf[i] = uartgetc()) < 0)
+ return i;
+ return siz;
+}
+
+int
uartwrite(const char *buf, size_t siz)
{
size_t i;
for (i = 0; i < siz; i++)
- uartputc(buf[i]);
+ if (uartputc(buf[i]) < 0)
+ return i;
flush();
return siz;
}
diff --git a/include/uart.h b/include/uart.h
@@ -3,4 +3,5 @@
extern void uartinit(unsigned clkrate, unsigned baudrate);
extern int uartgetc(void);
extern int uartputc(int c);
+extern int uartread(char *buf, size_t siz);
extern int uartwrite(const char *buf, size_t siz);