Index: uspace/srv/hid/input/input.c
===================================================================
--- uspace/srv/hid/input/input.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/hid/input/input.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -539,5 +539,6 @@
 		size_t nread;
 
-		chardev_read(sdev->chardev, &data, sizeof(data), &nread);
+		chardev_read(sdev->chardev, &data, sizeof(data), &nread,
+		    chardev_f_none);
 		/* XXX Handle error */
 		kbd_push_data(sdev->kdev, data);
Index: uspace/srv/hid/input/port/chardev.c
===================================================================
--- uspace/srv/hid/input/port/chardev.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/hid/input/port/chardev.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -138,5 +138,6 @@
 
 	while (true) {
-		rc = chardev_read(chardev, &b, sizeof(b), &nread);
+		rc = chardev_read(chardev, &b, sizeof(b), &nread,
+		    chardev_f_none);
 		if (rc != EOK || nread != sizeof(b)) {
 			printf("%s: Error reading data", NAME);
Index: uspace/srv/hid/isdv4_tablet/isdv4.c
===================================================================
--- uspace/srv/hid/isdv4_tablet/isdv4.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/hid/isdv4_tablet/isdv4.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -293,5 +293,5 @@
 
 		rc = chardev_read(state->chardev, state->buf + state->buf_end,
-		    state->buf_size - state->buf_end, &nread);
+		    state->buf_size - state->buf_end, &nread, chardev_f_none);
 		if (rc != EOK && nread == 0)
 			return EIO;
Index: uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c
===================================================================
--- uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -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);
 
Index: uspace/srv/net/slip/slip.c
===================================================================
--- uspace/srv/net/slip/slip.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/net/slip/slip.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -212,5 +212,5 @@
 
 		rc = chardev_read(chardev, slip_recv_buf,
-		    sizeof(slip_recv_buf), &nread);
+		    sizeof(slip_recv_buf), &nread, chardev_f_none);
 		if (rc != EOK) {
 			log_msg(LOG_DEFAULT, LVL_ERROR,
Index: uspace/srv/test/chardev-test/main.c
===================================================================
--- uspace/srv/test/chardev-test/main.c	(revision c477c804d1208352d69c7b069a54d3e3b650ff96)
+++ uspace/srv/test/chardev-test/main.c	(revision 9c4df2136d978f44d78151ee519a3de3c8e56567)
@@ -50,15 +50,18 @@
 static errno_t smallx_close(chardev_srv_t *);
 static errno_t smallx_write(chardev_srv_t *, const void *, size_t, size_t *);
-static errno_t smallx_read(chardev_srv_t *, void *, size_t, size_t *);
+static errno_t smallx_read(chardev_srv_t *, void *, size_t, size_t *,
+    chardev_flags_t);
 
 static errno_t largex_open(chardev_srvs_t *, chardev_srv_t *);
 static errno_t largex_close(chardev_srv_t *);
 static errno_t largex_write(chardev_srv_t *, const void *, size_t, size_t *);
-static errno_t largex_read(chardev_srv_t *, void *, size_t, size_t *);
+static errno_t largex_read(chardev_srv_t *, void *, size_t, size_t *,
+    chardev_flags_t);
 
 static errno_t partialx_open(chardev_srvs_t *, chardev_srv_t *);
 static errno_t partialx_close(chardev_srv_t *);
 static errno_t partialx_write(chardev_srv_t *, const void *, size_t, size_t *);
-static errno_t partialx_read(chardev_srv_t *, void *, size_t, size_t *);
+static errno_t partialx_read(chardev_srv_t *, void *, size_t, size_t *,
+    chardev_flags_t);
 
 static service_id_t smallx_svc_id;
@@ -186,5 +189,5 @@
 
 static errno_t smallx_read(chardev_srv_t *srv, void *buf, size_t size,
-    size_t *nread)
+    size_t *nread, chardev_flags_t flags)
 {
 	if (size < 1) {
@@ -221,5 +224,5 @@
 
 static errno_t largex_read(chardev_srv_t *srv, void *buf, size_t size,
-    size_t *nread)
+    size_t *nread, chardev_flags_t flags)
 {
 	if (size < 1) {
@@ -256,5 +259,5 @@
 
 static errno_t partialx_read(chardev_srv_t *srv, void *buf, size_t size,
-    size_t *nread)
+    size_t *nread, chardev_flags_t flags)
 {
 	if (size < 1) {
