about summary refs log tree commit diff
path: root/src/rt/rust_uv.cpp
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-10-17 17:04:51 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-10-24 14:21:57 -0700
commit4eb53360541baf3e6df36dc0f0766bc7c1c9f8be (patch)
tree0b78ce834f9df44297595d66b38883831811b99f /src/rt/rust_uv.cpp
parent4ce71eaca34526d0e3ee1ebf0658d2a20d388ef2 (diff)
downloadrust-4eb53360541baf3e6df36dc0f0766bc7c1c9f8be.tar.gz
rust-4eb53360541baf3e6df36dc0f0766bc7c1c9f8be.zip
Move as much I/O as possible off of native::io
When uv's TTY I/O is used for the stdio streams, the file descriptors are put
into a non-blocking mode. This means that other concurrent writes to the same
stream can fail with EAGAIN or EWOULDBLOCK. By all I/O to event-loop I/O, we
avoid this error.

There is one location which cannot move, which is the runtime's dumb_println
function. This was implemented to handle the EAGAIN and EWOULDBLOCK errors and
simply retry again and again.
Diffstat (limited to 'src/rt/rust_uv.cpp')
-rw-r--r--src/rt/rust_uv.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/rt/rust_uv.cpp b/src/rt/rust_uv.cpp
index a47b3446d34..7ab57e6909a 100644
--- a/src/rt/rust_uv.cpp
+++ b/src/rt/rust_uv.cpp
@@ -681,3 +681,8 @@ extern "C" int
 rust_uv_tty_get_winsize(uv_tty_t *tty, int *width, int *height) {
     return uv_tty_get_winsize(tty, width, height);
 }
+
+extern "C" uv_handle_type
+rust_uv_guess_handle(int fd) {
+    return uv_guess_handle(fd);
+}