Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
0ef015b2
Commit
0ef015b2
authored
May 07, 2014
by
Paul Sokolovsky
Browse files
stream: Make non-blcoking stream support configurable.
Enable only on unix. To avoid unpleasant surprises with error codes.
parent
6c62e725
Changes
3
Hide whitespace changes
Inline
Side-by-side
py/mpconfig.h
View file @
0ef015b2
...
...
@@ -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
...
...
py/stream.c
View file @
0ef015b2
...
...
@@ -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
];
...
...
unix/mpconfigport.h
View file @
0ef015b2
...
...
@@ -39,6 +39,7 @@
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
#define MICROPY_PATH_MAX (PATH_MAX)
#define MICROPY_STREAMS_NON_BLOCK (1)
#define MICROPY_USE_COMPUTED_GOTO (1)
#define MICROPY_MOD_SYS_STDFILES (1)
#define MICROPY_ENABLE_MOD_CMATH (1)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment