From c55987a3e9041894b74ad969a1d78adabcc5a7f9 Mon Sep 17 00:00:00 2001 From: Roland Dobai Date: Thu, 29 Mar 2018 14:18:10 +0200 Subject: [PATCH] vfs: consider O_NONBLOCK flag while opening UART FD --- components/vfs/vfs_uart.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/components/vfs/vfs_uart.c b/components/vfs/vfs_uart.c index f958278d21..033ff6345f 100644 --- a/components/vfs/vfs_uart.c +++ b/components/vfs/vfs_uart.c @@ -91,15 +91,22 @@ static int uart_open(const char * path, int flags, int mode) { // this is fairly primitive, we should check if file is opened read only, // and error out if write is requested + int fd = -1; + if (strcmp(path, "/0") == 0) { - return 0; + fd = 0; } else if (strcmp(path, "/1") == 0) { - return 1; + fd = 1; } else if (strcmp(path, "/2") == 0) { - return 2; + fd = 2; + } else { + errno = ENOENT; + return fd; } - errno = ENOENT; - return -1; + + s_non_blocking[fd] = ((flags & O_NONBLOCK) == O_NONBLOCK); + + return fd; } static void uart_tx_char(int fd, int c)