9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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:
Mdrivers/uart.c | 14+++++++++++++-
Minclude/uart.h | 1+
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);