Index: uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c
===================================================================
--- uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision 8fefd8b580bf28eb98fa4eda780105c9d6409cc7)
+++ uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision af7b85bb59db696cbde621017721740cf7612ff6)
@@ -69,5 +69,6 @@
 static void s3c24xx_uart_sendb(s3c24xx_uart_t *, uint8_t);
 
-static errno_t s3c24xx_uart_read(chardev_srv_t *, void *, size_t, size_t *);
+static errno_t s3c24xx_uart_read(chardev_srv_t *, void *, size_t, size_t *,
+    chardev_flags_t);
 static errno_t s3c24xx_uart_write(chardev_srv_t *, const void *, size_t, size_t *);
 
@@ -199,5 +200,5 @@
 
 static errno_t s3c24xx_uart_read(chardev_srv_t *srv, void *buf, size_t size,
-    size_t *nread)
+    size_t *nread, chardev_flags_t flags)
 {
 	s3c24xx_uart_t *uart = (s3c24xx_uart_t *) srv->srvs->sarg;
@@ -208,5 +209,6 @@
 	fibril_mutex_lock(&uart->buf_lock);
 
-	while (circ_buf_nused(&uart->cbuf) == 0)
+	while ((flags & chardev_f_nonblock) == 0 &&
+	    circ_buf_nused(&uart->cbuf) == 0)
 		fibril_condvar_wait(&uart->buf_cv, &uart->buf_lock);
 
