summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
Diffstat (limited to 'py')
-rw-r--r--py/mpconfig.h5
-rw-r--r--py/stream.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h
index 48494a21ff..9acfc142f5 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -249,6 +249,11 @@ typedef double mp_float_t;
#define MICROPY_PATH_MAX (512)
#endif
+// Whether POSIX-semantics non-blocking streams are supported
+#ifndef MICROPY_STREAMS_NON_BLOCK
+#define MICROPY_STREAMS_NON_BLOCK (0)
+#endif
+
// Whether to use computed gotos in the VM, or a switch
// Computed gotos are roughly 10% faster, and increase VM code size by a little
#ifndef MICROPY_USE_COMPUTED_GOTO
diff --git a/py/stream.c b/py/stream.c
index 96bf94fcd9..9eb438b538 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -25,7 +25,6 @@
*/
#include <string.h>
-#include <errno.h>
#include "mpconfig.h"
#include "nlr.h"
@@ -33,6 +32,9 @@
#include "qstr.h"
#include "obj.h"
#include "stream.h"
+#if MICROPY_STREAMS_NON_BLOCK
+#include <errno.h>
+#endif
// This file defines generic Python stream read/write methods which
// dispatch to the underlying stream interface of an object.
@@ -42,9 +44,13 @@
STATIC mp_obj_t stream_readall(mp_obj_t self_in);
+#if MICROPY_STREAMS_NON_BLOCK
// TODO: This is POSIX-specific (but then POSIX is the only real thing,
// and anything else just emulates it, right?)
#define is_nonblocking_error(errno) ((errno) == EAGAIN || (errno) == EWOULDBLOCK)
+#else
+#define is_nonblocking_error(errno) (0)
+#endif
STATIC mp_obj_t stream_read(uint n_args, const mp_obj_t *args) {
struct _mp_obj_base_t *o = (struct _mp_obj_base_t *)args[0];