Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gevent
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gevent
Commits
256a3fbf
Commit
256a3fbf
authored
Jul 11, 2018
by
Jason Madden
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update to libuv 1.22
parent
d15664a5
Changes
47
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
371 additions
and
775 deletions
+371
-775
CHANGES.rst
CHANGES.rst
+1
-1
deps/libuv/AUTHORS
deps/libuv/AUTHORS
+2
-0
deps/libuv/CMakeLists.txt
deps/libuv/CMakeLists.txt
+1
-2
deps/libuv/ChangeLog
deps/libuv/ChangeLog
+34
-1
deps/libuv/MAINTAINERS.md
deps/libuv/MAINTAINERS.md
+1
-1
deps/libuv/Makefile.am
deps/libuv/Makefile.am
+1
-2
deps/libuv/checksparse.sh
deps/libuv/checksparse.sh
+0
-254
deps/libuv/configure.ac
deps/libuv/configure.ac
+1
-1
deps/libuv/include/uv.h
deps/libuv/include/uv.h
+5
-2
deps/libuv/include/uv/version.h
deps/libuv/include/uv/version.h
+1
-1
deps/libuv/include/uv/win.h
deps/libuv/include/uv/win.h
+5
-6
deps/libuv/src/fs-poll.c
deps/libuv/src/fs-poll.c
+2
-2
deps/libuv/src/timer.c
deps/libuv/src/timer.c
+14
-5
deps/libuv/src/unix/core.c
deps/libuv/src/unix/core.c
+10
-8
deps/libuv/src/unix/fsevents.c
deps/libuv/src/unix/fsevents.c
+1
-1
deps/libuv/src/unix/internal.h
deps/libuv/src/unix/internal.h
+0
-25
deps/libuv/src/unix/loop.c
deps/libuv/src/unix/loop.c
+2
-2
deps/libuv/src/unix/os390-syscalls.c
deps/libuv/src/unix/os390-syscalls.c
+20
-9
deps/libuv/src/unix/pipe.c
deps/libuv/src/unix/pipe.c
+2
-2
deps/libuv/src/unix/process.c
deps/libuv/src/unix/process.c
+2
-2
deps/libuv/src/unix/signal.c
deps/libuv/src/unix/signal.c
+10
-10
deps/libuv/src/unix/stream.c
deps/libuv/src/unix/stream.c
+47
-44
deps/libuv/src/unix/tcp.c
deps/libuv/src/unix/tcp.c
+9
-9
deps/libuv/src/unix/tty.c
deps/libuv/src/unix/tty.c
+4
-4
deps/libuv/src/unix/udp.c
deps/libuv/src/unix/udp.c
+4
-4
deps/libuv/src/uv-common.c
deps/libuv/src/uv-common.c
+30
-5
deps/libuv/src/uv-common.h
deps/libuv/src/uv-common.h
+81
-34
deps/libuv/src/win/async.c
deps/libuv/src/win/async.c
+3
-3
deps/libuv/src/win/core.c
deps/libuv/src/win/core.c
+24
-4
deps/libuv/src/win/fs-event.c
deps/libuv/src/win/fs-event.c
+4
-4
deps/libuv/src/win/handle-inl.h
deps/libuv/src/win/handle-inl.h
+9
-8
deps/libuv/src/win/handle.c
deps/libuv/src/win/handle.c
+4
-4
deps/libuv/src/win/internal.h
deps/libuv/src/win/internal.h
+0
-72
deps/libuv/src/win/loop-watcher.c
deps/libuv/src/win/loop-watcher.c
+1
-1
deps/libuv/src/win/pipe.c
deps/libuv/src/win/pipe.c
+9
-10
deps/libuv/src/win/poll.c
deps/libuv/src/win/poll.c
+5
-5
deps/libuv/src/win/process-stdio.c
deps/libuv/src/win/process-stdio.c
+2
-1
deps/libuv/src/win/process.c
deps/libuv/src/win/process.c
+2
-2
deps/libuv/src/win/signal.c
deps/libuv/src/win/signal.c
+7
-7
deps/libuv/src/win/stream.c
deps/libuv/src/win/stream.c
+1
-1
deps/libuv/src/win/tcp.c
deps/libuv/src/win/tcp.c
+4
-4
deps/libuv/src/win/thread.c
deps/libuv/src/win/thread.c
+1
-10
deps/libuv/src/win/timer.c
deps/libuv/src/win/timer.c
+0
-195
deps/libuv/src/win/tty.c
deps/libuv/src/win/tty.c
+2
-2
deps/libuv/src/win/udp.c
deps/libuv/src/win/udp.c
+1
-1
deps/libuv/uv.gyp
deps/libuv/uv.gyp
+1
-2
src/gevent/libuv/_corecffi_build.py
src/gevent/libuv/_corecffi_build.py
+1
-2
No files found.
CHANGES.rst
View file @
256a3fbf
...
...
@@ -7,7 +7,7 @@
1.3.5 (unreleased)
==================
- Update the bundled libuv from 1.20.1 to 1.2
1
.0.
- Update the bundled libuv from 1.20.1 to 1.2
2
.0.
- Update Python versions tested on Travis, including PyPy to 6.0. See :issue:`1195`.
...
...
deps/libuv/AUTHORS
View file @
256a3fbf
...
...
@@ -343,3 +343,5 @@ Björn Linse <bjorn.linse@gmail.com>
zyxwvu Shi <i@shiyc.cn>
Peter Johnson <johnson.peter@gmail.com>
Paolo Greppi <paolo.greppi@libpf.com>
Shelley Vohr <shelley.vohr@gmail.com>
Ujjwal Sharma <usharma1998@gmail.com>
deps/libuv/CMakeLists.txt
View file @
256a3fbf
...
...
@@ -15,6 +15,7 @@ set(uv_sources
src/fs-poll.c
src/inet.c
src/threadpool.c
src/timer.c
src/uv-common.c
src/uv-data-getter-setters.c
src/version.c
)
...
...
@@ -197,7 +198,6 @@ if(WIN32)
src/win/stream.c
src/win/tcp.c
src/win/tty.c
src/win/timer.c
src/win/udp.c
src/win/util.c
src/win/winapi.c
...
...
@@ -223,7 +223,6 @@ else()
src/unix/stream.c
src/unix/tcp.c
src/unix/thread.c
src/unix/timer.c
src/unix/tty.c
src/unix/udp.c
)
list
(
APPEND uv_test_sources test/runner-unix.c
)
...
...
deps/libuv/ChangeLog
View file @
256a3fbf
2018.06.23, Version 1.21.0 (Stable)
2018.07.11, Version 1.22.0 (Stable)
Changes since version 1.21.0:
* unix: remove checksparse.sh (Ben Noordhuis)
* win: fix mingw build error (Ben Noordhuis)
* win: fix -Wunused-function warnings in thread.c (Ben Noordhuis)
* unix,win: merge timers implementation (Ben Noordhuis)
* win: fix pointer type in pipe.c (Ben Noordhuis)
* win: fixing build for older MSVC compilers (Michael Fero)
* zos: clear poll events on every iteration (jBarz)
* zos: write-protect message queue (jBarz)
* zos: use correct pointer type in strnlen (jBarz)
* unix,win: merge handle flags (Ben Noordhuis)
* doc: update Imran Iqbal's GitHub handle (cjihrig)
* src: add new error apis to prevent memory leaks (Shelley Vohr)
* test: make test-condvar call uv_cond_wait (Jamie Davis)
* fs: change position of uv_fs_lchown (Ujjwal Sharma)
2018.06.23, Version 1.21.0 (Stable), e4983a9b0c152932f7553ff4a9ff189d2314cdcb
Changes since version 1.20.3:
...
...
deps/libuv/MAINTAINERS.md
View file @
256a3fbf
...
...
@@ -12,7 +12,7 @@ libuv is currently managed by the following individuals:
-
GPG key: 5735 3E0D BDAA A7E8 39B6 6A1A FF47 D5E4 AD8B 4FDC (pubkey-cjihrig-kb)
*
**Fedor Indutny**
(
[
@indutny
](
https://github.com/indutny
)
)
-
GPG key: AF2E EA41 EC34 47BF DD86 FED9 D706 3CCE 19B7 E890 (pubkey-indutny)
*
**Imran Iqbal**
(
[
@i
WuzHere
](
https://github.com/iWuzHere
)
)
*
**Imran Iqbal**
(
[
@i
mran-iq
](
https://github.com/imran-iq
)
)
-
GPG key: 9DFE AA5F 481B BF77 2D90 03CE D592 4925 2F8E C41A (pubkey-iwuzhere)
*
**John Barboza**
(
[
@jbarz
](
https://github.com/jbarz
)
)
*
**Santiago Gimeno**
(
[
@santigimeno
](
https://github.com/santigimeno
)
)
...
...
deps/libuv/Makefile.am
View file @
256a3fbf
...
...
@@ -32,6 +32,7 @@ libuv_la_SOURCES = src/fs-poll.c \
src/inet.c
\
src/queue.h
\
src/threadpool.c
\
src/timer.c
\
src/uv-data-getter-setters.c
\
src/uv-common.c
\
src/uv-common.h
\
...
...
@@ -74,7 +75,6 @@ libuv_la_SOURCES += src/win/async.c \
src/win/stream-inl.h
\
src/win/tcp.c
\
src/win/thread.c
\
src/win/timer.c
\
src/win/tty.c
\
src/win/udp.c
\
src/win/util.c
\
...
...
@@ -105,7 +105,6 @@ libuv_la_SOURCES += src/unix/async.c \
src/unix/stream.c
\
src/unix/tcp.c
\
src/unix/thread.c
\
src/unix/timer.c
\
src/unix/tty.c
\
src/unix/udp.c
...
...
deps/libuv/checksparse.sh
deleted
100755 → 0
View file @
d15664a5
#!/bin/sh
# Copyright (c) 2013, Ben Noordhuis <info@bnoordhuis.nl>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
SPARSE
=
${
SPARSE
:-
sparse
}
SPARSE_FLAGS
=
${
SPARSE_FLAGS
:-
"
-D__POSIX__
-Wsparse-all
-Wno-do-while
-Wno-transparent-union
-Iinclude
-Isrc
"
}
SOURCES
=
"
include/uv/tree.h
include/uv/unix.h
include/uv.h
src/fs-poll.c
src/inet.c
src/queue.h
src/unix/async.c
src/unix/core.c
src/unix/dl.c
src/unix/fs.c
src/unix/getaddrinfo.c
src/unix/internal.h
src/unix/loop-watcher.c
src/unix/loop.c
src/unix/pipe.c
src/unix/poll.c
src/unix/process.c
src/unix/signal.c
src/unix/stream.c
src/unix/tcp.c
src/unix/thread.c
src/unix/threadpool.c
src/unix/timer.c
src/unix/tty.c
src/unix/udp.c
src/uv-common.c
src/uv-common.h
src/uv-data-getter-setters.c
"
TESTS
=
"
test/benchmark-async-pummel.c
test/benchmark-async.c
test/benchmark-fs-stat.c
test/benchmark-getaddrinfo.c
test/benchmark-loop-count.c
test/benchmark-million-async.c
test/benchmark-million-timers.c
test/benchmark-multi-accept.c
test/benchmark-ping-pongs.c
test/benchmark-pound.c
test/benchmark-pump.c
test/benchmark-sizes.c
test/benchmark-spawn.c
test/benchmark-tcp-write-batch.c
test/benchmark-thread.c
test/benchmark-udp-pummel.c
test/blackhole-server.c
test/dns-server.c
test/echo-server.c
test/run-benchmarks.c
test/run-tests.c
test/runner-unix.c
test/runner-unix.h
test/runner.c
test/runner.h
test/task.h
test/test-active.c
test/test-async.c
test/test-barrier.c
test/test-callback-order.c
test/test-callback-stack.c
test/test-condvar.c
test/test-connection-fail.c
test/test-cwd-and-chdir.c
test/test-delayed-accept.c
test/test-dlerror.c
test/test-embed.c
test/test-env-vars.c
test/test-error.c
test/test-fail-always.c
test/test-fs-copyfile.c
test/test-fs-event.c
test/test-fs-poll.c
test/test-fs.c
test/test-getters-setters.c
test/test-get-currentexe.c
test/test-get-loadavg.c
test/test-get-memory.c
test/test-get-passwd.c
test/test-getaddrinfo.c
test/test-gethostname.c
test/test-getsockname.c
test/test-homedir.c
test/test-hrtime.c
test/test-idle.c
test/test-ip6-addr.c
test/test-ipc-heavy-traffic-deadlock-bug.c
test/test-ipc-send-recv.c
test/test-ipc.c
test/test-loop-handles.c
test/test-multiple-listen.c
test/test-mutexes.c
test/test-pass-always.c
test/test-ping-pong.c
test/test-pipe-bind-error.c
test/test-pipe-connect-error.c
test/test-pipe-sendmsg.c
test/test-pipe-server-close.c
test/test-platform-output.c
test/test-poll-close.c
test/test-poll.c
test/test-process-title.c
test/test-process-title-threadsafe.c
test/test-ref.c
test/test-run-nowait.c
test/test-run-once.c
test/test-semaphore.c
test/test-shutdown-close.c
test/test-shutdown-eof.c
test/test-signal-multiple-loops.c
test/test-signal.c
test/test-spawn.c
test/test-stdio-over-pipes.c
test/test-tcp-bind-error.c
test/test-tcp-bind6-error.c
test/test-tcp-close-while-connecting.c
test/test-tcp-close-accept.c
test/test-tcp-close.c
test/test-tcp-connect-error-after-write.c
test/test-tcp-connect-error.c
test/test-tcp-connect-timeout.c
test/test-tcp-connect6-error.c
test/test-tcp-flags.c
test/test-tcp-open.c
test/test-tcp-read-stop.c
test/test-tcp-shutdown-after-write.c
test/test-tcp-unexpected-read.c
test/test-tcp-oob.c
test/test-tcp-write-error.c
test/test-tcp-write-to-half-open-connection.c
test/test-tcp-writealot.c
test/test-thread.c
test/test-threadpool-cancel.c
test/test-threadpool.c
test/test-timer-again.c
test/test-timer.c
test/test-tmpdir.c
test/test-tty.c
test/test-udp-dgram-too-big.c
test/test-udp-ipv6.c
test/test-udp-multicast-join.c
test/test-udp-multicast-ttl.c
test/test-udp-open.c
test/test-udp-options.c
test/test-udp-send-and-recv.c
test/test-udp-send-hang-loop.c
test/test-walk-handles.c
test/test-watcher-cross-stop.c
"
case
`
uname
-s
`
in
AIX
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D_AIX=1"
SOURCES
=
"
$SOURCES
src/unix/aix-common.c
src/unix/aix.c"
;;
OS400
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__PASE__=1"
SOURCES
=
"
$SOURCES
src/unix/aix-common.c
src/unix/ibmi.c
src/unix/posix-poll.c
src/unix/no-fsevents.c
src/unix/no-proctitle.c"
;;
Darwin
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__APPLE__=1"
SOURCES
=
"
$SOURCES
include/uv/bsd.h
src/unix/darwin.c
src/unix/kqueue.c
src/unix/fsevents.c"
;;
DragonFly
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__DragonFly__=1"
SOURCES
=
"
$SOURCES
include/uv/bsd.h
src/unix/kqueue.c
src/unix/freebsd.c"
;;
FreeBSD
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__FreeBSD__=1"
SOURCES
=
"
$SOURCES
include/uv/bsd.h
src/unix/kqueue.c
src/unix/freebsd.c"
;;
Linux
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__linux__=1"
SOURCES
=
"
$SOURCES
include/uv/linux.h
src/unix/linux-inotify.c
src/unix/linux-core.c
src/unix/linux-syscalls.c
src/unix/linux-syscalls.h"
;;
NetBSD
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__NetBSD__=1"
SOURCES
=
"
$SOURCES
include/uv/bsd.h
src/unix/kqueue.c
src/unix/netbsd.c"
;;
OpenBSD
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__OpenBSD__=1"
SOURCES
=
"
$SOURCES
include/uv/bsd.h
src/unix/kqueue.c
src/unix/openbsd.c"
;;
SunOS
)
SPARSE_FLAGS
=
"
$SPARSE_FLAGS
-D__sun=1"
SOURCES
=
"
$SOURCES
include/uv/sunos.h
src/unix/sunos.c"
;;
esac
for
ARCH
in
__i386__ __x86_64__ __arm__ __mips__
;
do
$SPARSE
$SPARSE_FLAGS
-D
$ARCH
=
1
$SOURCES
done
# Tests are architecture independent.
$SPARSE
$SPARSE_FLAGS
-Itest
$TESTS
deps/libuv/configure.ac
View file @
256a3fbf
...
...
@@ -13,7 +13,7 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
AC_PREREQ(2.57)
AC_INIT([libuv], [1.2
1
.0], [https://github.com/libuv/libuv/issues])
AC_INIT([libuv], [1.2
2
.0], [https://github.com/libuv/libuv/issues])
AC_CONFIG_MACRO_DIR([m4])
m4_include([m4/libuv-extra-automake-flags.m4])
m4_include([m4/as_case.m4])
...
...
deps/libuv/include/uv.h
View file @
256a3fbf
...
...
@@ -370,7 +370,10 @@ typedef enum {
UV_EXTERN
int
uv_translate_sys_error
(
int
sys_errno
);
UV_EXTERN
const
char
*
uv_strerror
(
int
err
);
UV_EXTERN
char
*
uv_strerror_r
(
int
err
,
char
*
buf
,
size_t
buflen
);
UV_EXTERN
const
char
*
uv_err_name
(
int
err
);
UV_EXTERN
char
*
uv_err_name_r
(
int
err
,
char
*
buf
,
size_t
buflen
);
#define UV_REQ_FIELDS \
...
...
@@ -1141,9 +1144,9 @@ typedef enum {
UV_FS_READLINK
,
UV_FS_CHOWN
,
UV_FS_FCHOWN
,
UV_FS_LCHOWN
,
UV_FS_REALPATH
,
UV_FS_COPYFILE
UV_FS_COPYFILE
,
UV_FS_LCHOWN
}
uv_fs_type
;
/* uv_fs_t is a subclass of uv_req_t. */
...
...
deps/libuv/include/uv/version.h
View file @
256a3fbf
...
...
@@ -31,7 +31,7 @@
*/
#define UV_VERSION_MAJOR 1
#define UV_VERSION_MINOR 2
1
#define UV_VERSION_MINOR 2
2
#define UV_VERSION_PATCH 0
#define UV_VERSION_IS_RELEASE 1
#define UV_VERSION_SUFFIX ""
...
...
deps/libuv/include/uv/win.h
View file @
256a3fbf
...
...
@@ -308,8 +308,6 @@ typedef struct {
char
*
errmsg
;
}
uv_lib_t
;
RB_HEAD
(
uv_timer_tree_s
,
uv_timer_s
);
#define UV_LOOP_PRIVATE_FIELDS \
/* The loop's I/O completion port */
\
HANDLE iocp; \
...
...
@@ -321,8 +319,8 @@ RB_HEAD(uv_timer_tree_s, uv_timer_s);
uv_req_t* pending_reqs_tail; \
/* Head of a single-linked list of closed handles */
\
uv_handle_t* endgame_handles; \
/* T
he head of the timers tree */
\
struct uv_timer_tree_s timers;
\
/* T
ODO(bnoordhuis) Stop heap-allocating |timer_heap| in libuv v2.x. */
\
void* timer_heap;
\
/* Lists of active loop (prepare / check / idle) watchers */
\
uv_prepare_t* prepare_handles; \
uv_check_t* check_handles; \
...
...
@@ -529,8 +527,9 @@ RB_HEAD(uv_timer_tree_s, uv_timer_s);
unsigned char events;
#define UV_TIMER_PRIVATE_FIELDS \
RB_ENTRY(uv_timer_s) tree_entry; \
uint64_t due; \
void* heap_node[3]; \
int unused; \
uint64_t timeout; \
uint64_t repeat; \
uint64_t start_id; \
uv_timer_cb timer_cb;
...
...
deps/libuv/src/fs-poll.c
View file @
256a3fbf
...
...
@@ -83,7 +83,7 @@ int uv_fs_poll_start(uv_fs_poll_t* handle,
if
(
err
<
0
)
goto
error
;
ctx
->
timer_handle
.
flags
|=
UV_
_
HANDLE_INTERNAL
;
ctx
->
timer_handle
.
flags
|=
UV_HANDLE_INTERNAL
;
uv__handle_unref
(
&
ctx
->
timer_handle
);
err
=
uv_fs_stat
(
loop
,
&
ctx
->
fs_req
,
ctx
->
path
,
poll_cb
);
...
...
@@ -248,7 +248,7 @@ static int statbuf_eq(const uv_stat_t* a, const uv_stat_t* b) {
#include "win/handle-inl.h"
void
uv__fs_poll_endgame
(
uv_loop_t
*
loop
,
uv_fs_poll_t
*
handle
)
{
assert
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
);
assert
(
handle
->
flags
&
UV_HANDLE_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
uv__handle_close
(
handle
);
}
...
...
deps/libuv/src/
unix/
timer.c
→
deps/libuv/src/timer.c
View file @
256a3fbf
...
...
@@ -19,13 +19,22 @@
*/
#include "uv.h"
#include "
internal
.h"
#include "
uv-common
.h"
#include "heap-inl.h"
#include <assert.h>
#include <limits.h>
static
struct
heap
*
timer_heap
(
const
uv_loop_t
*
loop
)
{
#ifdef _WIN32
return
(
struct
heap
*
)
loop
->
timer_heap
;
#else
return
(
struct
heap
*
)
&
loop
->
timer_heap
;
#endif
}
static
int
timer_less_than
(
const
struct
heap_node
*
ha
,
const
struct
heap_node
*
hb
)
{
const
uv_timer_t
*
a
;
...
...
@@ -81,7 +90,7 @@ int uv_timer_start(uv_timer_t* handle,
/* start_id is the second index to be compared in uv__timer_cmp() */
handle
->
start_id
=
handle
->
loop
->
timer_counter
++
;
heap_insert
(
(
struct
heap
*
)
&
handle
->
loop
->
timer_heap
,
heap_insert
(
timer_heap
(
handle
->
loop
)
,
(
struct
heap_node
*
)
&
handle
->
heap_node
,
timer_less_than
);
uv__handle_start
(
handle
);
...
...
@@ -94,7 +103,7 @@ int uv_timer_stop(uv_timer_t* handle) {
if
(
!
uv__is_active
(
handle
))
return
0
;
heap_remove
(
(
struct
heap
*
)
&
handle
->
loop
->
timer_heap
,
heap_remove
(
timer_heap
(
handle
->
loop
)
,
(
struct
heap_node
*
)
&
handle
->
heap_node
,
timer_less_than
);
uv__handle_stop
(
handle
);
...
...
@@ -131,7 +140,7 @@ int uv__next_timeout(const uv_loop_t* loop) {
const
uv_timer_t
*
handle
;
uint64_t
diff
;
heap_node
=
heap_min
(
(
const
struct
heap
*
)
&
loop
->
timer_heap
);
heap_node
=
heap_min
(
timer_heap
(
loop
)
);
if
(
heap_node
==
NULL
)
return
-
1
;
/* block indefinitely */
...
...
@@ -152,7 +161,7 @@ void uv__run_timers(uv_loop_t* loop) {
uv_timer_t
*
handle
;
for
(;;)
{
heap_node
=
heap_min
(
(
struct
heap
*
)
&
loop
->
timer_heap
);
heap_node
=
heap_min
(
timer_heap
(
loop
)
);
if
(
heap_node
==
NULL
)
break
;
...
...
deps/libuv/src/unix/core.c
View file @
256a3fbf
...
...
@@ -116,7 +116,7 @@ uint64_t uv_hrtime(void) {
void
uv_close
(
uv_handle_t
*
handle
,
uv_close_cb
close_cb
)
{
assert
(
!
uv__is_closing
(
handle
));
handle
->
flags
|=
UV_CLOSING
;
handle
->
flags
|=
UV_
HANDLE_
CLOSING
;
handle
->
close_cb
=
close_cb
;
switch
(
handle
->
type
)
{
...
...
@@ -214,8 +214,8 @@ int uv__socket_sockopt(uv_handle_t* handle, int optname, int* value) {
}
void
uv__make_close_pending
(
uv_handle_t
*
handle
)
{
assert
(
handle
->
flags
&
UV_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_CLOSED
));
assert
(
handle
->
flags
&
UV_
HANDLE_
CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_
HANDLE_
CLOSED
));
handle
->
next_closing
=
handle
->
loop
->
closing_handles
;
handle
->
loop
->
closing_handles
=
handle
;
}
...
...
@@ -241,15 +241,17 @@ int uv__getiovmax(void) {
static
void
uv__finish_close
(
uv_handle_t
*
handle
)
{
/* Note: while the handle is in the UV_CLOSING state now, it's still possible
* for it to be active in the sense that uv__is_active() returns true.
/* Note: while the handle is in the UV_HANDLE_CLOSING state now, it's still
* possible for it to be active in the sense that uv__is_active() returns
* true.
*
* A good example is when the user calls uv_shutdown(), immediately followed
* by uv_close(). The handle is considered active at this point because the
* completion of the shutdown req is still pending.
*/
assert
(
handle
->
flags
&
UV_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_CLOSED
));
handle
->
flags
|=
UV_CLOSED
;
assert
(
handle
->
flags
&
UV_
HANDLE_
CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_
HANDLE_
CLOSED
));
handle
->
flags
|=
UV_
HANDLE_
CLOSED
;
switch
(
handle
->
type
)
{
case
UV_PREPARE
:
...
...
deps/libuv/src/unix/fsevents.c
View file @
256a3fbf
...
...
@@ -836,7 +836,7 @@ int uv__fsevents_init(uv_fs_event_t* handle) {
handle
->
cf_cb
->
data
=
handle
;
uv_async_init
(
handle
->
loop
,
handle
->
cf_cb
,
uv__fsevents_cb
);
handle
->
cf_cb
->
flags
|=
UV_
_
HANDLE_INTERNAL
;
handle
->
cf_cb
->
flags
|=
UV_HANDLE_INTERNAL
;
uv_unref
((
uv_handle_t
*
)
handle
->
cf_cb
);
err
=
uv_mutex_init
(
&
handle
->
cf_mutex
);
...
...
deps/libuv/src/unix/internal.h
View file @
256a3fbf
...
...
@@ -127,26 +127,6 @@ int uv__pthread_sigmask(int how, const sigset_t* set, sigset_t* oset);
typedef
struct
uv__stream_queued_fds_s
uv__stream_queued_fds_t
;
/* handle flags */
enum
{
UV_CLOSING
=
0x01
,
/* uv_close() called but not finished. */
UV_CLOSED
=
0x02
,
/* close(2) finished. */
UV_STREAM_READING
=
0x04
,
/* uv_read_start() called. */
UV_STREAM_SHUTTING
=
0x08
,
/* uv_shutdown() called but not complete. */
UV_STREAM_SHUT
=
0x10
,
/* Write side closed. */
UV_STREAM_READABLE
=
0x20
,
/* The stream is readable */
UV_STREAM_WRITABLE
=
0x40
,
/* The stream is writable */
UV_STREAM_BLOCKING
=
0x80
,
/* Synchronous writes. */
UV_STREAM_READ_PARTIAL
=
0x100
,
/* read(2) read less than requested. */
UV_STREAM_READ_EOF
=
0x200
,
/* read(2) read EOF. */
UV_TCP_NODELAY
=
0x400
,
/* Disable Nagle. */
UV_TCP_KEEPALIVE
=
0x800
,
/* Turn on keep-alive. */
UV_TCP_SINGLE_ACCEPT
=
0x1000
,
/* Only accept() when idle. */
UV_HANDLE_IPV6
=
0x10000
,
/* Handle is bound to a IPv6 socket. */
UV_UDP_PROCESSING
=
0x20000
,
/* Handle is running the send callback queue. */
UV_HANDLE_BOUND
=
0x40000
/* Handle is bound to an address and port */
};
/* loop flags */
enum
{
UV_LOOP_BLOCK_SIGPROF
=
1
...
...
@@ -252,10 +232,6 @@ int uv__tcp_keepalive(int fd, int on, unsigned int delay);
/* pipe */
int
uv_pipe_listen
(
uv_pipe_t
*
handle
,
int
backlog
,
uv_connection_cb
cb
);
/* timer */
void
uv__run_timers
(
uv_loop_t
*
loop
);
int
uv__next_timeout
(
const
uv_loop_t
*
loop
);
/* signal */
void
uv__signal_close
(
uv_signal_t
*
handle
);
void
uv__signal_global_once_init
(
void
);
...
...
@@ -280,7 +256,6 @@ void uv__prepare_close(uv_prepare_t* handle);
void
uv__process_close
(
uv_process_t
*
handle
);
void
uv__stream_close
(
uv_stream_t
*
handle
);
void
uv__tcp_close
(
uv_tcp_t
*
handle
);
void
uv__timer_close
(
uv_timer_t
*
handle
);
void
uv__udp_close
(
uv_udp_t
*
handle
);
void
uv__udp_finish_close
(
uv_udp_t
*
handle
);
uv_handle_type
uv__handle_type
(
int
fd
);
...
...
deps/libuv/src/unix/loop.c
View file @
256a3fbf
...
...
@@ -74,7 +74,7 @@ int uv_loop_init(uv_loop_t* loop) {
goto
fail_signal_init
;
uv__handle_unref
(
&
loop
->
child_watcher
);
loop
->
child_watcher
.
flags
|=
UV_
_
HANDLE_INTERNAL
;
loop
->
child_watcher
.
flags
|=
UV_HANDLE_INTERNAL
;
QUEUE_INIT
(
&
loop
->
process_handles
);
err
=
uv_rwlock_init
(
&
loop
->
cloexec_lock
);
...
...
@@ -90,7 +90,7 @@ int uv_loop_init(uv_loop_t* loop) {
goto
fail_async_init
;
uv__handle_unref
(
&
loop
->
wq_async
);
loop
->
wq_async
.
flags
|=
UV_
_
HANDLE_INTERNAL
;
loop
->
wq_async
.
flags
|=
UV_HANDLE_INTERNAL
;
return
0
;
...
...
deps/libuv/src/unix/os390-syscalls.c
View file @
256a3fbf
...
...
@@ -141,7 +141,7 @@ static void init_message_queue(uv__os390_epoll* lst) {
}
msg
;
/* initialize message queue */
lst
->
msg_queue
=
msgget
(
IPC_PRIVATE
,
06
22
|
IPC_CREAT
);
lst
->
msg_queue
=
msgget
(
IPC_PRIVATE
,
06
00
|
IPC_CREAT
);
if
(
lst
->
msg_queue
==
-
1
)
abort
();
...
...
@@ -255,12 +255,13 @@ int epoll_ctl(uv__os390_epoll* lst,
lst
->
items
[
fd
].
events
=
event
->
events
;
lst
->
items
[
fd
].
revents
=
0
;
}
else
if
(
op
==
EPOLL_CTL_MOD
)
{
if
(
fd
>=
lst
->
size
||
lst
->
items
[
fd
].
fd
==
-
1
)
{
if
(
fd
>=
lst
->
size
-
1
||
lst
->
items
[
fd
].
fd
==
-
1
)
{
uv_mutex_unlock
(
&
global_epoll_lock
);
errno
=
ENOENT
;
return
-
1
;
}
lst
->
items
[
fd
].
events
=
event
->
events
;
lst
->
items
[
fd
].
revents
=
0
;
}
else
abort
();
...
...
@@ -275,8 +276,9 @@ int epoll_wait(uv__os390_epoll* lst, struct epoll_event* events,
struct
pollfd
*
pfds
;
int
pollret
;
int
reventcount
;
int
nevents
;
size
=
_SET_FDS_MSGS
(
size
,
1
,
lst
->
size
-
1
);
_SET_FDS_MSGS
(
size
,
1
,
lst
->
size
-
1
);
pfds
=
lst
->
items
;
pollret
=
poll
(
pfds
,
size
,
timeout
);
if
(
pollret
<=
0
)
...
...
@@ -285,19 +287,28 @@ int epoll_wait(uv__os390_epoll* lst, struct epoll_event* events,
pollret
=
_NFDS
(
pollret
)
+
_NMSGS
(
pollret
);
reventcount
=
0
;
nevents
=
0
;
for
(
int
i
=
0
;
i
<
lst
->
size
&&
i
<
maxevents
&&
reventcount
<
pollret
;
++
i
)
{
struct
epoll_event
ev
;
struct
pollfd
*
pfd
;
if
(
pfds
[
i
].
fd
==
-
1
||
pfds
[
i
].
revents
==
0
)
pfd
=
&
pfds
[
i
];
if
(
pfd
->
fd
==
-
1
||
pfd
->
revents
==
0
)
continue
;
ev
.
fd
=
pfds
[
i
].
fd
;
ev
.
events
=
pfds
[
i
].
revents
;
events
[
reventcount
++
]
=
ev
;
ev
.
fd
=
pfd
->
fd
;
ev
.
events
=
pfd
->
revents
;
if
(
pfd
->
revents
&
POLLIN
&&
pfd
->
revents
&
POLLOUT
)
reventcount
+=
2
;
else
if
(
pfd
->
revents
&
(
POLLIN
|
POLLOUT
))
++
reventcount
;
pfd
->
revents
=
0
;
events
[
nevents
++
]
=
ev
;
}
return
reventcount
;
return
nevents
;
}
...
...
@@ -493,7 +504,7 @@ ssize_t os390_readlink(const char* path, char* buf, size_t len) {
size_t
strnlen
(
const
char
*
str
,
size_t
maxlen
)
{
void
*
p
=
memchr
(
str
,
0
,
maxlen
);
char
*
p
=
memchr
(
str
,
0
,
maxlen
);
if
(
p
==
NULL
)
return
maxlen
;
else
...
...
deps/libuv/src/unix/pipe.c
View file @
256a3fbf
...
...
@@ -149,7 +149,7 @@ int uv_pipe_open(uv_pipe_t* handle, uv_file fd) {
return
uv__stream_open
((
uv_stream_t
*
)
handle
,
fd
,
UV_
STREAM_READABLE
|
UV_STREAM
_WRITABLE
);
UV_
HANDLE_READABLE
|
UV_HANDLE
_WRITABLE
);
}
...
...
@@ -199,7 +199,7 @@ void uv_pipe_connect(uv_connect_t* req,
if
(
new_sock
)
{
err
=
uv__stream_open
((
uv_stream_t
*
)
handle
,
uv__stream_fd
(
handle
),
UV_
STREAM_READABLE
|
UV_STREAM
_WRITABLE
);
UV_
HANDLE_READABLE
|
UV_HANDLE
_WRITABLE
);
}
if
(
err
==
0
)
...
...
deps/libuv/src/unix/process.c
View file @
256a3fbf
...
...
@@ -239,9 +239,9 @@ static int uv__process_open_stream(uv_stdio_container_t* container,
flags
=
0
;
if
(
container
->
flags
&
UV_WRITABLE_PIPE
)
flags
|=
UV_
STREAM
_READABLE
;
flags
|=
UV_
HANDLE
_READABLE
;
if
(
container
->
flags
&
UV_READABLE_PIPE
)
flags
|=
UV_
STREAM
_WRITABLE
;
flags
|=
UV_
HANDLE
_WRITABLE
;
return
uv__stream_open
(
container
->
data
.
stream
,
pipefds
[
0
],
flags
);
}
...
...
deps/libuv/src/unix/signal.c
View file @
256a3fbf
...
...
@@ -396,7 +396,7 @@ static int uv__signal_start(uv_signal_t* handle,
*/
first_handle
=
uv__signal_first_handle
(
signum
);
if
(
first_handle
==
NULL
||
(
!
oneshot
&&
(
first_handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
)))
{
(
!
oneshot
&&
(
first_handle
->
flags
&
UV_SIGNAL_ONE_SHOT
)))
{
err
=
uv__signal_register_handler
(
signum
,
oneshot
);
if
(
err
)
{
/* Registering the signal handler failed. Must be an invalid signal. */
...
...
@@ -407,7 +407,7 @@ static int uv__signal_start(uv_signal_t* handle,
handle
->
signum
=
signum
;
if
(
oneshot
)
handle
->
flags
|=
UV_
_
SIGNAL_ONE_SHOT
;
handle
->
flags
|=
UV_SIGNAL_ONE_SHOT
;
RB_INSERT
(
uv__signal_tree_s
,
&
uv__signal_tree
,
handle
);
...
...
@@ -464,20 +464,20 @@ static void uv__signal_event(uv_loop_t* loop,
handle
=
msg
->
handle
;
if
(
msg
->
signum
==
handle
->
signum
)
{
assert
(
!
(
handle
->
flags
&
UV_CLOSING
));
assert
(
!
(
handle
->
flags
&
UV_
HANDLE_
CLOSING
));
handle
->
signal_cb
(
handle
,
handle
->
signum
);
}
handle
->
dispatched_signals
++
;
if
(
handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
)
if
(
handle
->
flags
&
UV_SIGNAL_ONE_SHOT
)
uv__signal_stop
(
handle
);
/* If uv_close was called while there were caught signals that were not
* yet dispatched, the uv__finish_close was deferred. Make close pending
* now if this has happened.
*/
if
((
handle
->
flags
&
UV_CLOSING
)
&&
if
((
handle
->
flags
&
UV_
HANDLE_
CLOSING
)
&&
(
handle
->
caught_signals
==
handle
->
dispatched_signals
))
{
uv__make_close_pending
((
uv_handle_t
*
)
handle
);
}
...
...
@@ -505,11 +505,11 @@ static int uv__signal_compare(uv_signal_t* w1, uv_signal_t* w2) {
if
(
w1
->
signum
<
w2
->
signum
)
return
-
1
;
if
(
w1
->
signum
>
w2
->
signum
)
return
1
;
/* Handlers without UV_
_
SIGNAL_ONE_SHOT set will come first, so if the first
/* Handlers without UV_SIGNAL_ONE_SHOT set will come first, so if the first
* handler returned is a one-shot handler, the rest will be too.
*/
f1
=
w1
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
;
f2
=
w2
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
;
f1
=
w1
->
flags
&
UV_SIGNAL_ONE_SHOT
;
f2
=
w2
->
flags
&
UV_SIGNAL_ONE_SHOT
;
if
(
f1
<
f2
)
return
-
1
;
if
(
f1
>
f2
)
return
1
;
...
...
@@ -558,8 +558,8 @@ static void uv__signal_stop(uv_signal_t* handle) {
if
(
first_handle
==
NULL
)
{
uv__signal_unregister_handler
(
handle
->
signum
);
}
else
{
rem_oneshot
=
handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
;
first_oneshot
=
first_handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
;
rem_oneshot
=
handle
->
flags
&
UV_SIGNAL_ONE_SHOT
;
first_oneshot
=
first_handle
->
flags
&
UV_SIGNAL_ONE_SHOT
;
if
(
first_oneshot
&&
!
rem_oneshot
)
{
ret
=
uv__signal_register_handler
(
handle
->
signum
,
1
);
assert
(
ret
==
0
);
...
...
deps/libuv/src/unix/stream.c
View file @
256a3fbf
This diff is collapsed.
Click to expand it.
deps/libuv/src/unix/tcp.c
View file @
256a3fbf
...
...
@@ -216,7 +216,7 @@ int uv__tcp_connect(uv_connect_t* req,
err
=
maybe_new_socket
(
handle
,
addr
->
sa_family
,
UV_
STREAM_READABLE
|
UV_STREAM
_WRITABLE
);
UV_
HANDLE_READABLE
|
UV_HANDLE
_WRITABLE
);
if
(
err
)
return
err
;
...
...
@@ -272,7 +272,7 @@ int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock) {
return
uv__stream_open
((
uv_stream_t
*
)
handle
,
sock
,
UV_
STREAM_READABLE
|
UV_STREAM
_WRITABLE
);
UV_
HANDLE_READABLE
|
UV_HANDLE
_WRITABLE
);
}
...
...
@@ -334,7 +334,7 @@ int uv_tcp_listen(uv_tcp_t* tcp, int backlog, uv_connection_cb cb) {
}
if
(
single_accept
)
tcp
->
flags
|=
UV_TCP_SINGLE_ACCEPT
;
tcp
->
flags
|=
UV_
HANDLE_
TCP_SINGLE_ACCEPT
;
flags
=
0
;
#if defined(__MVS__)
...
...
@@ -401,9 +401,9 @@ int uv_tcp_nodelay(uv_tcp_t* handle, int on) {
}
if
(
on
)
handle
->
flags
|=
UV_TCP_NODELAY
;
handle
->
flags
|=
UV_
HANDLE_
TCP_NODELAY
;
else
handle
->
flags
&=
~
UV_TCP_NODELAY
;
handle
->
flags
&=
~
UV_
HANDLE_
TCP_NODELAY
;
return
0
;
}
...
...
@@ -419,9 +419,9 @@ int uv_tcp_keepalive(uv_tcp_t* handle, int on, unsigned int delay) {
}
if
(
on
)
handle
->
flags
|=
UV_TCP_KEEPALIVE
;
handle
->
flags
|=
UV_
HANDLE_
TCP_KEEPALIVE
;
else
handle
->
flags
&=
~
UV_TCP_KEEPALIVE
;
handle
->
flags
&=
~
UV_
HANDLE_
TCP_KEEPALIVE
;
/* TODO Store delay if uv__stream_fd(handle) == -1 but don't want to enlarge
* uv_tcp_t with an int that's almost never used...
...
...
@@ -433,9 +433,9 @@ int uv_tcp_keepalive(uv_tcp_t* handle, int on, unsigned int delay) {
int
uv_tcp_simultaneous_accepts
(
uv_tcp_t
*
handle
,
int
enable
)
{
if
(
enable
)
handle
->
flags
&=
~
UV_TCP_SINGLE_ACCEPT
;
handle
->
flags
&=
~
UV_
HANDLE_
TCP_SINGLE_ACCEPT
;
else
handle
->
flags
|=
UV_TCP_SINGLE_ACCEPT
;
handle
->
flags
|=
UV_
HANDLE_
TCP_SINGLE_ACCEPT
;
return
0
;
}
...
...
deps/libuv/src/unix/tty.c
View file @
256a3fbf
...
...
@@ -135,7 +135,7 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
if
(
r
<
0
)
{
/* fallback to using blocking writes */
if
(
!
readable
)
flags
|=
UV_
STREAM_BLOCKING
;
flags
|=
UV_
HANDLE_BLOCKING_WRITES
;
goto
skip
;
}
...
...
@@ -177,7 +177,7 @@ skip:
* the handle queue, since it was added by uv__handle_init in uv_stream_init.
*/
if
(
!
(
flags
&
UV_
STREAM_BLOCKING
))
if
(
!
(
flags
&
UV_
HANDLE_BLOCKING_WRITES
))
uv__nonblock
(
fd
,
1
);
#if defined(__APPLE__)
...
...
@@ -195,9 +195,9 @@ skip:
#endif
if
(
readable
)
flags
|=
UV_
STREAM
_READABLE
;
flags
|=
UV_
HANDLE
_READABLE
;
else
flags
|=
UV_
STREAM
_WRITABLE
;
flags
|=
UV_
HANDLE
_WRITABLE
;
uv__stream_open
((
uv_stream_t
*
)
tty
,
fd
,
flags
);
tty
->
mode
=
UV_TTY_MODE_NORMAL
;
...
...
deps/libuv/src/unix/udp.c
View file @
256a3fbf
...
...
@@ -92,8 +92,8 @@ static void uv__udp_run_completed(uv_udp_t* handle) {
uv_udp_send_t
*
req
;
QUEUE
*
q
;
assert
(
!
(
handle
->
flags
&
UV_UDP_PROCESSING
));
handle
->
flags
|=
UV_UDP_PROCESSING
;
assert
(
!
(
handle
->
flags
&
UV_
HANDLE_
UDP_PROCESSING
));
handle
->
flags
|=
UV_
HANDLE_
UDP_PROCESSING
;
while
(
!
QUEUE_EMPTY
(
&
handle
->
write_completed_queue
))
{
q
=
QUEUE_HEAD
(
&
handle
->
write_completed_queue
);
...
...
@@ -128,7 +128,7 @@ static void uv__udp_run_completed(uv_udp_t* handle) {
uv__handle_stop
(
handle
);
}
handle
->
flags
&=
~
UV_UDP_PROCESSING
;
handle
->
flags
&=
~
UV_
HANDLE_
UDP_PROCESSING
;
}
...
...
@@ -427,7 +427,7 @@ int uv__udp_send(uv_udp_send_t* req,
QUEUE_INSERT_TAIL
(
&
handle
->
write_queue
,
&
req
->
queue
);
uv__handle_start
(
handle
);
if
(
empty_queue
&&
!
(
handle
->
flags
&
UV_UDP_PROCESSING
))
{
if
(
empty_queue
&&
!
(
handle
->
flags
&
UV_
HANDLE_
UDP_PROCESSING
))
{
uv__udp_sendmsg
(
handle
);
/* `uv__udp_sendmsg` may not be able to do non-blocking write straight
...
...
deps/libuv/src/uv-common.c
View file @
256a3fbf
...
...
@@ -155,6 +155,18 @@ static const char* uv__unknown_err_code(int err) {
return
copy
!=
NULL
?
copy
:
"Unknown system error"
;
}
#define UV_ERR_NAME_GEN_R(name, _) \
case UV_## name: \
snprintf(buf, buflen, "%s", #name); break;
char
*
uv_err_name_r
(
int
err
,
char
*
buf
,
size_t
buflen
)
{
switch
(
err
)
{
UV_ERRNO_MAP
(
UV_ERR_NAME_GEN_R
)
default:
snprintf
(
buf
,
buflen
,
"Unknown system error %d"
,
err
);
}
return
buf
;
}
#undef UV_ERR_NAME_GEN_R
#define UV_ERR_NAME_GEN(name, _) case UV_ ## name: return #name;
const
char
*
uv_err_name
(
int
err
)
{
...
...
@@ -166,6 +178,19 @@ const char* uv_err_name(int err) {
#undef UV_ERR_NAME_GEN
#define UV_STRERROR_GEN_R(name, msg) \
case UV_ ## name: \
snprintf(buf, buflen, "%s", msg); break;
char
*
uv_strerror_r
(
int
err
,
char
*
buf
,
size_t
buflen
)
{
switch
(
err
)
{
UV_ERRNO_MAP
(
UV_STRERROR_GEN_R
)
default:
snprintf
(
buf
,
buflen
,
"Unknown system error %d"
,
err
);
}
return
buf
;
}
#undef UV_STRERROR_GEN_R
#define UV_STRERROR_GEN(name, msg) case UV_ ## name: return msg;
const
char
*
uv_strerror
(
int
err
)
{
switch
(
err
)
{
...
...
@@ -357,7 +382,7 @@ void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg) {
QUEUE_REMOVE
(
q
);
QUEUE_INSERT_TAIL
(
&
loop
->
handle_queue
,
q
);
if
(
h
->
flags
&
UV_
_
HANDLE_INTERNAL
)
continue
;
if
(
h
->
flags
&
UV_HANDLE_INTERNAL
)
continue
;
walk_cb
(
h
,
arg
);
}
}
...
...
@@ -386,9 +411,9 @@ static void uv__print_handles(uv_loop_t* loop, int only_active, FILE* stream) {
fprintf
(
stream
,
"[%c%c%c] %-8s %p
\n
"
,
"R-"
[
!
(
h
->
flags
&
UV_
_
HANDLE_REF
)],
"A-"
[
!
(
h
->
flags
&
UV_
_
HANDLE_ACTIVE
)],
"I-"
[
!
(
h
->
flags
&
UV_
_
HANDLE_INTERNAL
)],
"R-"
[
!
(
h
->
flags
&
UV_HANDLE_REF
)],
"A-"
[
!
(
h
->
flags
&
UV_HANDLE_ACTIVE
)],
"I-"
[
!
(
h
->
flags
&
UV_HANDLE_INTERNAL
)],
type
,
(
void
*
)
h
);
}
...
...
@@ -632,7 +657,7 @@ int uv_loop_close(uv_loop_t* loop) {
QUEUE_FOREACH
(
q
,
&
loop
->
handle_queue
)
{
h
=
QUEUE_DATA
(
q
,
uv_handle_t
,
handle_queue
);
if
(
!
(
h
->
flags
&
UV_
_
HANDLE_INTERNAL
))
if
(
!
(
h
->
flags
&
UV_HANDLE_INTERNAL
))
return
UV_EBUSY
;
}
...
...
deps/libuv/src/uv-common.h
View file @
256a3fbf
...
...
@@ -59,22 +59,67 @@ extern int snprintf(char*, size_t, const char*, ...);
#define STATIC_ASSERT(expr) \
void uv__static_assert(int static_assert_failed[1 - 2 * !(expr)])
#ifndef _WIN32
/* Handle flags. Some flags are specific to Windows or UNIX. */
enum
{
UV__SIGNAL_ONE_SHOT
=
0x80000
,
/* On signal reception remove sighandler */
UV__HANDLE_INTERNAL
=
0x8000
,
UV__HANDLE_ACTIVE
=
0x4000
,
UV__HANDLE_REF
=
0x2000
,
UV__HANDLE_CLOSING
=
0
/* no-op on unix */
/* Used by all handles. */
UV_HANDLE_CLOSING
=
0x00000001
,
UV_HANDLE_CLOSED
=
0x00000002
,
UV_HANDLE_ACTIVE
=
0x00000004
,
UV_HANDLE_REF
=
0x00000008
,
UV_HANDLE_INTERNAL
=
0x00000010
,
UV_HANDLE_ENDGAME_QUEUED
=
0x00000020
,
/* Used by streams. */
UV_HANDLE_LISTENING
=
0x00000040
,
UV_HANDLE_CONNECTION
=
0x00000080
,
UV_HANDLE_SHUTTING
=
0x00000100
,
UV_HANDLE_SHUT
=
0x00000200
,
UV_HANDLE_READ_PARTIAL
=
0x00000400
,
UV_HANDLE_READ_EOF
=
0x00000800
,
/* Used by streams and UDP handles. */
UV_HANDLE_READING
=
0x00001000
,
UV_HANDLE_BOUND
=
0x00002000
,
UV_HANDLE_READABLE
=
0x00004000
,
UV_HANDLE_WRITABLE
=
0x00008000
,
UV_HANDLE_READ_PENDING
=
0x00010000
,
UV_HANDLE_SYNC_BYPASS_IOCP
=
0x00020000
,
UV_HANDLE_ZERO_READ
=
0x00040000
,
UV_HANDLE_EMULATE_IOCP
=
0x00080000
,
UV_HANDLE_BLOCKING_WRITES
=
0x00100000
,
UV_HANDLE_CANCELLATION_PENDING
=
0x00200000
,
/* Used by uv_tcp_t and uv_udp_t handles */
UV_HANDLE_IPV6
=
0x00400000
,
/* Only used by uv_tcp_t handles. */
UV_HANDLE_TCP_NODELAY
=
0x01000000
,
UV_HANDLE_TCP_KEEPALIVE
=
0x02000000
,
UV_HANDLE_TCP_SINGLE_ACCEPT
=
0x04000000
,
UV_HANDLE_TCP_ACCEPT_STATE_CHANGING
=
0x08000000
,
UV_HANDLE_TCP_SOCKET_CLOSED
=
0x10000000
,
UV_HANDLE_SHARED_TCP_SOCKET
=
0x20000000
,
/* Only used by uv_udp_t handles. */
UV_HANDLE_UDP_PROCESSING
=
0x01000000
,
/* Only used by uv_pipe_t handles. */
UV_HANDLE_NON_OVERLAPPED_PIPE
=
0x01000000
,
UV_HANDLE_PIPESERVER
=
0x02000000
,
/* Only used by uv_tty_t handles. */
UV_HANDLE_TTY_READABLE
=
0x01000000
,
UV_HANDLE_TTY_RAW
=
0x02000000
,
UV_HANDLE_TTY_SAVED_POSITION
=
0x04000000
,
UV_HANDLE_TTY_SAVED_ATTRIBUTES
=
0x08000000
,
/* Only used by uv_signal_t handles. */
UV_SIGNAL_ONE_SHOT_DISPATCHED
=
0x01000000
,
UV_SIGNAL_ONE_SHOT
=
0x02000000
,
/* Only used by uv_poll_t handles. */
UV_HANDLE_POLL_SLOW
=
0x01000000
};
#else
# define UV__SIGNAL_ONE_SHOT_DISPATCHED 0x200
# define UV__SIGNAL_ONE_SHOT 0x100
# define UV__HANDLE_INTERNAL 0x80
# define UV__HANDLE_ACTIVE 0x40
# define UV__HANDLE_REF 0x20
# define UV__HANDLE_CLOSING 0x01
#endif
int
uv__loop_configure
(
uv_loop_t
*
loop
,
uv_loop_option
option
,
va_list
ap
);
...
...
@@ -132,6 +177,10 @@ int uv__socket_sockopt(uv_handle_t* handle, int optname, int* value);
void
uv__fs_scandir_cleanup
(
uv_fs_t
*
req
);
int
uv__next_timeout
(
const
uv_loop_t
*
loop
);
void
uv__run_timers
(
uv_loop_t
*
loop
);
void
uv__timer_close
(
uv_timer_t
*
handle
);
#define uv__has_active_reqs(loop) \
((loop)->active_reqs.count > 0)
...
...
@@ -164,49 +213,47 @@ void uv__fs_scandir_cleanup(uv_fs_t* req);
while (0)
#define uv__is_active(h) \
(((h)->flags & UV_
_
HANDLE_ACTIVE) != 0)
(((h)->flags & UV_HANDLE_ACTIVE) != 0)
#define uv__is_closing(h) \
(((h)->flags & (UV_
CLOSING | UV
_CLOSED)) != 0)
(((h)->flags & (UV_
HANDLE_CLOSING | UV_HANDLE
_CLOSED)) != 0)
#define uv__handle_start(h) \
do { \
assert(((h)->flags & UV__HANDLE_CLOSING) == 0); \
if (((h)->flags & UV__HANDLE_ACTIVE) != 0) break; \
(h)->flags |= UV__HANDLE_ACTIVE; \
if (((h)->flags & UV__HANDLE_REF) != 0) uv__active_handle_add(h); \
if (((h)->flags & UV_HANDLE_ACTIVE) != 0) break; \
(h)->flags |= UV_HANDLE_ACTIVE; \
if (((h)->flags & UV_HANDLE_REF) != 0) uv__active_handle_add(h); \
} \
while (0)
#define uv__handle_stop(h) \
do { \
assert(((h)->flags & UV__HANDLE_CLOSING) == 0); \
if (((h)->flags & UV__HANDLE_ACTIVE) == 0) break; \
(h)->flags &= ~UV__HANDLE_ACTIVE; \
if (((h)->flags & UV__HANDLE_REF) != 0) uv__active_handle_rm(h); \
if (((h)->flags & UV_HANDLE_ACTIVE) == 0) break; \
(h)->flags &= ~UV_HANDLE_ACTIVE; \
if (((h)->flags & UV_HANDLE_REF) != 0) uv__active_handle_rm(h); \
} \
while (0)
#define uv__handle_ref(h) \
do { \
if (((h)->flags & UV_
_HANDLE_REF) != 0) break;
\
(h)->flags |= UV_
_HANDLE_REF;
\
if (((h)->flags & UV_
_HANDLE_CLOSING) != 0) break;
\
if (((h)->flags & UV_
_HANDLE_ACTIVE) != 0) uv__active_handle_add(h);
\
if (((h)->flags & UV_
HANDLE_REF) != 0) break;
\
(h)->flags |= UV_
HANDLE_REF;
\
if (((h)->flags & UV_
HANDLE_CLOSING) != 0) break;
\
if (((h)->flags & UV_
HANDLE_ACTIVE) != 0) uv__active_handle_add(h);
\
} \
while (0)
#define uv__handle_unref(h) \
do { \
if (((h)->flags & UV_
_HANDLE_REF) == 0) break;
\
(h)->flags &= ~UV_
_HANDLE_REF;
\
if (((h)->flags & UV_
_HANDLE_CLOSING) != 0) break;
\
if (((h)->flags & UV_
_HANDLE_ACTIVE) != 0) uv__active_handle_rm(h);
\
if (((h)->flags & UV_
HANDLE_REF) == 0) break;
\
(h)->flags &= ~UV_
HANDLE_REF;
\
if (((h)->flags & UV_
HANDLE_CLOSING) != 0) break;
\
if (((h)->flags & UV_
HANDLE_ACTIVE) != 0) uv__active_handle_rm(h);
\
} \
while (0)
#define uv__has_ref(h) \
(((h)->flags & UV_
_
HANDLE_REF) != 0)
(((h)->flags & UV_HANDLE_REF) != 0)
#if defined(_WIN32)
# define uv__handle_platform_init(h) ((h)->u.fd = -1)
...
...
@@ -218,7 +265,7 @@ void uv__fs_scandir_cleanup(uv_fs_t* req);
do { \
(h)->loop = (loop_); \
(h)->type = (type_); \
(h)->flags = UV_
_HANDLE_REF;
/* Ref the loop when active. */
\
(h)->flags = UV_
HANDLE_REF;
/* Ref the loop when active. */
\
QUEUE_INSERT_TAIL(&(loop_)->handle_queue, &(h)->handle_queue); \
uv__handle_platform_init(h); \
} \
...
...
deps/libuv/src/win/async.c
View file @
256a3fbf
...
...
@@ -29,7 +29,7 @@
void
uv_async_endgame
(
uv_loop_t
*
loop
,
uv_async_t
*
handle
)
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
&&
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
&&
!
handle
->
async_sent
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
uv__handle_close
(
handle
);
...
...
@@ -73,7 +73,7 @@ int uv_async_send(uv_async_t* handle) {
/* The user should make sure never to call uv_async_send to a closing or
* closed handle. */
assert
(
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
));
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
));
if
(
!
uv__atomic_exchange_set
(
&
handle
->
async_sent
))
{
POST_COMPLETION_FOR_REQ
(
loop
,
&
handle
->
async_req
);
...
...
@@ -90,7 +90,7 @@ void uv_process_async_wakeup_req(uv_loop_t* loop, uv_async_t* handle,
handle
->
async_sent
=
0
;
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
}
else
if
(
handle
->
async_cb
!=
NULL
)
{
handle
->
async_cb
(
handle
);
...
...
deps/libuv/src/win/core.c
View file @
256a3fbf
...
...
@@ -33,6 +33,7 @@
#include "internal.h"
#include "queue.h"
#include "handle-inl.h"
#include "heap-inl.h"
#include "req-inl.h"
/* uv_once initialization guards */
...
...
@@ -221,6 +222,7 @@ static void uv_init(void) {
int
uv_loop_init
(
uv_loop_t
*
loop
)
{
struct
heap
*
timer_heap
;
int
err
;
/* Initialize libuv itself first */
...
...
@@ -246,7 +248,11 @@ int uv_loop_init(uv_loop_t* loop) {
loop
->
endgame_handles
=
NULL
;
RB_INIT
(
&
loop
->
timers
);
loop
->
timer_heap
=
timer_heap
=
uv__malloc
(
sizeof
(
*
timer_heap
));
if
(
timer_heap
==
NULL
)
goto
fail_timers_alloc
;
heap_init
(
timer_heap
);
loop
->
check_handles
=
NULL
;
loop
->
prepare_handles
=
NULL
;
...
...
@@ -273,7 +279,7 @@ int uv_loop_init(uv_loop_t* loop) {
goto
fail_async_init
;
uv__handle_unref
(
&
loop
->
wq_async
);
loop
->
wq_async
.
flags
|=
UV_
_
HANDLE_INTERNAL
;
loop
->
wq_async
.
flags
|=
UV_HANDLE_INTERNAL
;
err
=
uv__loops_add
(
loop
);
if
(
err
)
...
...
@@ -285,6 +291,10 @@ fail_async_init:
uv_mutex_destroy
(
&
loop
->
wq_mutex
);
fail_mutex_init:
uv__free
(
timer_heap
);
loop
->
timer_heap
=
NULL
;
fail_timers_alloc:
CloseHandle
(
loop
->
iocp
);
loop
->
iocp
=
INVALID_HANDLE_VALUE
;
...
...
@@ -292,6 +302,13 @@ fail_mutex_init:
}
void
uv_update_time
(
uv_loop_t
*
loop
)
{
uint64_t
new_time
=
uv__hrtime
(
1000
);
assert
(
new_time
>=
loop
->
time
);
loop
->
time
=
new_time
;
}
void
uv__once_init
(
void
)
{
uv_once
(
&
uv_init_guard_
,
uv_init
);
}
...
...
@@ -320,6 +337,9 @@ void uv__loop_close(uv_loop_t* loop) {
uv_mutex_unlock
(
&
loop
->
wq_mutex
);
uv_mutex_destroy
(
&
loop
->
wq_mutex
);
uv__free
(
loop
->
timer_heap
);
loop
->
timer_heap
=
NULL
;
CloseHandle
(
loop
->
iocp
);
}
...
...
@@ -441,7 +461,7 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
while
(
r
!=
0
&&
loop
->
stop_flag
==
0
)
{
uv_update_time
(
loop
);
uv_
process
_timers
(
loop
);
uv_
_run
_timers
(
loop
);
ran_pending
=
uv_process_reqs
(
loop
);
uv_idle_invoke
(
loop
);
...
...
@@ -465,7 +485,7 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
* UV_RUN_NOWAIT makes no guarantees about progress so it's omitted from
* the check.
*/
uv_
process
_timers
(
loop
);
uv_
_run
_timers
(
loop
);
}
r
=
uv__loop_alive
(
loop
);
...
...
deps/libuv/src/win/fs-event.c
View file @
256a3fbf
...
...
@@ -419,7 +419,7 @@ void uv_process_fs_event_req(uv_loop_t* loop, uv_req_t* req,
* - We are not active, just ignore the callback
*/
if
(
!
uv__is_active
(
handle
))
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
}
return
;
...
...
@@ -543,7 +543,7 @@ void uv_process_fs_event_req(uv_loop_t* loop, uv_req_t* req,
}
offset
=
file_info
->
NextEntryOffset
;
}
while
(
offset
&&
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
));
}
while
(
offset
&&
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
));
}
else
{
handle
->
cb
(
handle
,
NULL
,
UV_CHANGE
,
0
);
}
...
...
@@ -552,7 +552,7 @@ void uv_process_fs_event_req(uv_loop_t* loop, uv_req_t* req,
handle
->
cb
(
handle
,
NULL
,
0
,
uv_translate_sys_error
(
err
));
}
if
(
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
))
{
if
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
))
{
uv_fs_event_queue_readdirchanges
(
loop
,
handle
);
}
else
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
...
...
@@ -573,7 +573,7 @@ void uv_fs_event_close(uv_loop_t* loop, uv_fs_event_t* handle) {
void
uv_fs_event_endgame
(
uv_loop_t
*
loop
,
uv_fs_event_t
*
handle
)
{
if
((
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
&&
!
handle
->
req_pending
)
{
if
((
handle
->
flags
&
UV_HANDLE_CLOSING
)
&&
!
handle
->
req_pending
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
if
(
handle
->
buffer
)
{
...
...
deps/libuv/src/win/handle-inl.h
View file @
256a3fbf
...
...
@@ -32,7 +32,7 @@
#define DECREASE_ACTIVE_COUNT(loop, handle) \
do { \
if (--(handle)->activecnt == 0 && \
!((handle)->flags & UV_
_HANDLE_CLOSING)) {
\
!((handle)->flags & UV_
HANDLE_CLOSING)) {
\
uv__handle_stop((handle)); \
} \
assert((handle)->activecnt >= 0); \
...
...
@@ -53,7 +53,7 @@
assert(handle->reqs_pending > 0); \
handle->reqs_pending--; \
\
if (handle->flags & UV_
_HANDLE_CLOSING &&
\
if (handle->flags & UV_
HANDLE_CLOSING &&
\
handle->reqs_pending == 0) { \
uv_want_endgame(loop, (uv_handle_t*)handle); \
} \
...
...
@@ -62,14 +62,14 @@
#define uv__handle_closing(handle) \
do { \
assert(!((handle)->flags & UV_
_HANDLE_CLOSING));
\
assert(!((handle)->flags & UV_
HANDLE_CLOSING));
\
\
if (!(((handle)->flags & UV_
_HANDLE_ACTIVE) &&
\
((handle)->flags & UV_
_HANDLE_REF)))
\
if (!(((handle)->flags & UV_
HANDLE_ACTIVE) &&
\
((handle)->flags & UV_
HANDLE_REF)))
\
uv__active_handle_add((uv_handle_t*) (handle)); \
\
(handle)->flags |= UV_
_HANDLE_CLOSING;
\
(handle)->flags &= ~UV_
_HANDLE_ACTIVE;
\
(handle)->flags |= UV_
HANDLE_CLOSING;
\
(handle)->flags &= ~UV_
HANDLE_ACTIVE;
\
} while (0)
...
...
@@ -126,7 +126,8 @@ INLINE static void uv_process_endgames(uv_loop_t* loop) {
break
;
case
UV_TIMER
:
uv_timer_endgame
(
loop
,
(
uv_timer_t
*
)
handle
);
uv__timer_close
((
uv_timer_t
*
)
handle
);
uv__handle_close
(
handle
);
break
;
case
UV_PREPARE
:
...
...
deps/libuv/src/win/handle.c
View file @
256a3fbf
...
...
@@ -59,15 +59,15 @@ uv_handle_type uv_guess_handle(uv_file file) {
int
uv_is_active
(
const
uv_handle_t
*
handle
)
{
return
(
handle
->
flags
&
UV_
_
HANDLE_ACTIVE
)
&&
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
);
return
(
handle
->
flags
&
UV_HANDLE_ACTIVE
)
&&
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
);
}
void
uv_close
(
uv_handle_t
*
handle
,
uv_close_cb
cb
)
{
uv_loop_t
*
loop
=
handle
->
loop
;
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
assert
(
0
);
return
;
}
...
...
@@ -150,7 +150,7 @@ void uv_close(uv_handle_t* handle, uv_close_cb cb) {
int
uv_is_closing
(
const
uv_handle_t
*
handle
)
{
return
!!
(
handle
->
flags
&
(
UV_
_
HANDLE_CLOSING
|
UV_HANDLE_CLOSED
));
return
!!
(
handle
->
flags
&
(
UV_HANDLE_CLOSING
|
UV_HANDLE_CLOSED
));
}
...
...
deps/libuv/src/win/internal.h
View file @
256a3fbf
...
...
@@ -57,69 +57,6 @@ extern UV_THREAD_LOCAL int uv__crt_assert_enabled;
#define UV_END_DISABLE_CRT_ASSERT()
#endif
/*
* Handles
* (also see handle-inl.h)
*/
/* Used by all handles. */
#define UV_HANDLE_CLOSED 0x00000002
#define UV_HANDLE_ENDGAME_QUEUED 0x00000008
/* uv-common.h: #define UV__HANDLE_CLOSING 0x00000001 */
/* uv-common.h: #define UV__HANDLE_ACTIVE 0x00000040 */
/* uv-common.h: #define UV__HANDLE_REF 0x00000020 */
/* uv-common.h: #define UV_HANDLE_INTERNAL 0x00000080 */
/* Used by streams and UDP handles. */
#define UV_HANDLE_READING 0x00000100
#define UV_HANDLE_BOUND 0x00000200
#define UV_HANDLE_LISTENING 0x00000800
#define UV_HANDLE_CONNECTION 0x00001000
#define UV_HANDLE_READABLE 0x00008000
#define UV_HANDLE_WRITABLE 0x00010000
#define UV_HANDLE_READ_PENDING 0x00020000
#define UV_HANDLE_SYNC_BYPASS_IOCP 0x00040000
#define UV_HANDLE_ZERO_READ 0x00080000
#define UV_HANDLE_EMULATE_IOCP 0x00100000
#define UV_HANDLE_BLOCKING_WRITES 0x00200000
#define UV_HANDLE_CANCELLATION_PENDING 0x00400000
/* Used by uv_tcp_t and uv_udp_t handles */
#define UV_HANDLE_IPV6 0x01000000
/* Only used by uv_tcp_t handles. */
#define UV_HANDLE_TCP_NODELAY 0x02000000
#define UV_HANDLE_TCP_KEEPALIVE 0x04000000
#define UV_HANDLE_TCP_SINGLE_ACCEPT 0x08000000
#define UV_HANDLE_TCP_ACCEPT_STATE_CHANGING 0x10000000
#define UV_HANDLE_TCP_SOCKET_CLOSED 0x20000000
#define UV_HANDLE_SHARED_TCP_SOCKET 0x40000000
/* Only used by uv_pipe_t handles. */
#define UV_HANDLE_NON_OVERLAPPED_PIPE 0x01000000
#define UV_HANDLE_PIPESERVER 0x02000000
/* Only used by uv_tty_t handles. */
#define UV_HANDLE_TTY_READABLE 0x01000000
#define UV_HANDLE_TTY_RAW 0x02000000
#define UV_HANDLE_TTY_SAVED_POSITION 0x04000000
#define UV_HANDLE_TTY_SAVED_ATTRIBUTES 0x08000000
/* Only used by uv_poll_t handles. */
#define UV_HANDLE_POLL_SLOW 0x02000000
/*
* Requests: see req-inl.h
*/
/*
* Streams: see stream-inl.h
*/
/*
* TCP
*/
...
...
@@ -246,15 +183,6 @@ int uv_poll_close(uv_loop_t* loop, uv_poll_t* handle);
void
uv_poll_endgame
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
);
/*
* Timers
*/
void
uv_timer_endgame
(
uv_loop_t
*
loop
,
uv_timer_t
*
handle
);
DWORD
uv__next_timeout
(
const
uv_loop_t
*
loop
);
void
uv_process_timers
(
uv_loop_t
*
loop
);
/*
* Loop watchers
*/
...
...
deps/libuv/src/win/loop-watcher.c
View file @
256a3fbf
...
...
@@ -27,7 +27,7 @@
void
uv_loop_watcher_endgame
(
uv_loop_t
*
loop
,
uv_handle_t
*
handle
)
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
handle
->
flags
|=
UV_HANDLE_CLOSED
;
uv__handle_close
(
handle
);
...
...
deps/libuv/src/win/pipe.c
View file @
256a3fbf
...
...
@@ -21,7 +21,6 @@
#include <assert.h>
#include <io.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
...
...
@@ -347,7 +346,7 @@ void uv_pipe_endgame(uv_loop_t* loop, uv_pipe_t* handle) {
/* Clear the shutdown_req field so we don't go here again. */
handle
->
stream
.
conn
.
shutdown_req
=
NULL
;
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
UNREGISTER_HANDLE_REQ
(
loop
,
handle
,
req
);
/* Already closing. Cancel the shutdown. */
...
...
@@ -408,7 +407,7 @@ void uv_pipe_endgame(uv_loop_t* loop, uv_pipe_t* handle) {
}
}
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
&&
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
&&
handle
->
reqs_pending
==
0
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
...
...
@@ -907,7 +906,7 @@ int uv_pipe_accept(uv_pipe_t* server, uv_stream_t* client) {
req
->
next_pending
=
NULL
;
req
->
pipeHandle
=
INVALID_HANDLE_VALUE
;
if
(
!
(
server
->
flags
&
UV_
_
HANDLE_CLOSING
))
{
if
(
!
(
server
->
flags
&
UV_HANDLE_CLOSING
))
{
uv_pipe_queue_accept
(
loop
,
server
,
req
,
FALSE
);
}
}
...
...
@@ -1294,7 +1293,7 @@ static int uv__pipe_write_data(uv_loop_t* loop,
size_t
nbufs
,
uv_stream_t
*
send_handle
,
uv_write_cb
cb
,
bool
copy_always
)
{
int
copy_always
)
{
int
err
;
int
result
;
uv_buf_t
write_buf
;
...
...
@@ -1536,7 +1535,7 @@ int uv__pipe_write_ipc(uv_loop_t* loop,
/* Write buffers. We set the `always_copy` flag, so it is not a problem that
* some of the written data lives on the stack. */
err
=
uv__pipe_write_data
(
loop
,
req
,
handle
,
bufs
,
buf_count
,
send_handle
,
cb
,
true
);
loop
,
req
,
handle
,
bufs
,
buf_count
,
send_handle
,
cb
,
1
);
/* If we had to heap-allocate the bufs array, free it now. */
if
(
bufs
!=
stack_bufs
)
{
...
...
@@ -1561,7 +1560,7 @@ int uv__pipe_write(uv_loop_t* loop,
/* Non-IPC pipe write: put data on the wire directly. */
assert
(
send_handle
==
NULL
);
return
uv__pipe_write_data
(
loop
,
req
,
handle
,
bufs
,
nbufs
,
NULL
,
cb
,
false
);
loop
,
req
,
handle
,
bufs
,
nbufs
,
NULL
,
cb
,
0
);
}
}
...
...
@@ -1675,7 +1674,7 @@ static DWORD uv__pipe_read_data(uv_loop_t* loop,
static
DWORD
uv__pipe_read_ipc
(
uv_loop_t
*
loop
,
uv_pipe_t
*
handle
)
{
DWORD
*
data_remaining
=
&
handle
->
pipe
.
conn
.
ipc_data_frame
.
payload_remaining
;
uint32_t
*
data_remaining
=
&
handle
->
pipe
.
conn
.
ipc_data_frame
.
payload_remaining
;
int
err
;
if
(
*
data_remaining
>
0
)
{
...
...
@@ -1856,7 +1855,7 @@ void uv_process_pipe_accept_req(uv_loop_t* loop, uv_pipe_t* handle,
assert
(
handle
->
type
==
UV_NAMED_PIPE
);
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
/* The req->pipeHandle should be freed already in uv_pipe_cleanup(). */
assert
(
req
->
pipeHandle
==
INVALID_HANDLE_VALUE
);
DECREASE_PENDING_REQ_COUNT
(
handle
);
...
...
@@ -1876,7 +1875,7 @@ void uv_process_pipe_accept_req(uv_loop_t* loop, uv_pipe_t* handle,
CloseHandle
(
req
->
pipeHandle
);
req
->
pipeHandle
=
INVALID_HANDLE_VALUE
;
}
if
(
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
))
{
if
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
))
{
uv_pipe_queue_accept
(
loop
,
handle
,
req
,
FALSE
);
}
}
...
...
deps/libuv/src/win/poll.c
View file @
256a3fbf
...
...
@@ -218,7 +218,7 @@ static void uv__fast_poll_process_poll_req(uv_loop_t* loop, uv_poll_t* handle,
if
((
handle
->
events
&
~
(
handle
->
submitted_events_1
|
handle
->
submitted_events_2
))
!=
0
)
{
uv__fast_poll_submit_poll_req
(
loop
,
handle
);
}
else
if
((
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
&&
}
else
if
((
handle
->
flags
&
UV_HANDLE_CLOSING
)
&&
handle
->
submitted_events_1
==
0
&&
handle
->
submitted_events_2
==
0
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
...
...
@@ -228,7 +228,7 @@ static void uv__fast_poll_process_poll_req(uv_loop_t* loop, uv_poll_t* handle,
static
int
uv__fast_poll_set
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
,
int
events
)
{
assert
(
handle
->
type
==
UV_POLL
);
assert
(
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
));
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
));
assert
((
events
&
~
(
UV_READABLE
|
UV_WRITABLE
|
UV_DISCONNECT
))
==
0
);
handle
->
events
=
events
;
...
...
@@ -461,7 +461,7 @@ static void uv__slow_poll_process_poll_req(uv_loop_t* loop, uv_poll_t* handle,
if
((
handle
->
events
&
~
(
handle
->
submitted_events_1
|
handle
->
submitted_events_2
))
!=
0
)
{
uv__slow_poll_submit_poll_req
(
loop
,
handle
);
}
else
if
((
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
&&
}
else
if
((
handle
->
flags
&
UV_HANDLE_CLOSING
)
&&
handle
->
submitted_events_1
==
0
&&
handle
->
submitted_events_2
==
0
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
...
...
@@ -471,7 +471,7 @@ static void uv__slow_poll_process_poll_req(uv_loop_t* loop, uv_poll_t* handle,
static
int
uv__slow_poll_set
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
,
int
events
)
{
assert
(
handle
->
type
==
UV_POLL
);
assert
(
!
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
));
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
));
assert
((
events
&
~
(
UV_READABLE
|
UV_WRITABLE
))
==
0
);
handle
->
events
=
events
;
...
...
@@ -633,7 +633,7 @@ int uv_poll_close(uv_loop_t* loop, uv_poll_t* handle) {
void
uv_poll_endgame
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
)
{
assert
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
);
assert
(
handle
->
flags
&
UV_HANDLE_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
assert
(
handle
->
submitted_events_1
==
0
);
...
...
deps/libuv/src/win/process-stdio.c
View file @
256a3fbf
...
...
@@ -103,6 +103,7 @@ static int uv__create_stdio_pipe_pair(uv_loop_t* loop,
DWORD
client_access
=
0
;
HANDLE
child_pipe
=
INVALID_HANDLE_VALUE
;
int
err
;
int
overlap
;
if
(
flags
&
UV_READABLE_PIPE
)
{
/* The server needs inbound access too, otherwise CreateNamedPipe() won't
...
...
@@ -130,7 +131,7 @@ static int uv__create_stdio_pipe_pair(uv_loop_t* loop,
sa
.
lpSecurityDescriptor
=
NULL
;
sa
.
bInheritHandle
=
TRUE
;
BOOL
overlap
=
server_pipe
->
ipc
||
(
flags
&
UV_OVERLAPPED_PIPE
);
overlap
=
server_pipe
->
ipc
||
(
flags
&
UV_OVERLAPPED_PIPE
);
child_pipe
=
CreateFileA
(
pipe_name
,
client_access
,
0
,
...
...
deps/libuv/src/win/process.c
View file @
256a3fbf
...
...
@@ -872,7 +872,7 @@ void uv_process_proc_exit(uv_loop_t* loop, uv_process_t* handle) {
/* If we're closing, don't call the exit callback. Just schedule a close
* callback now. */
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
return
;
}
...
...
@@ -924,7 +924,7 @@ void uv_process_close(uv_loop_t* loop, uv_process_t* handle) {
void
uv_process_endgame
(
uv_loop_t
*
loop
,
uv_process_t
*
handle
)
{
assert
(
!
handle
->
exit_cb_pending
);
assert
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
);
assert
(
handle
->
flags
&
UV_HANDLE_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
/* Clean-up the process handle. */
...
...
deps/libuv/src/win/signal.c
View file @
256a3fbf
...
...
@@ -90,7 +90,7 @@ int uv__signal_dispatch(int signum) {
unsigned
long
previous
=
InterlockedExchange
(
(
volatile
LONG
*
)
&
handle
->
pending_signum
,
signum
);
if
(
handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT_DISPATCHED
)
if
(
handle
->
flags
&
UV_SIGNAL_ONE_SHOT_DISPATCHED
)
continue
;
if
(
!
previous
)
{
...
...
@@ -98,8 +98,8 @@ int uv__signal_dispatch(int signum) {
}
dispatched
=
1
;
if
(
handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
)
handle
->
flags
|=
UV_
_
SIGNAL_ONE_SHOT_DISPATCHED
;
if
(
handle
->
flags
&
UV_SIGNAL_ONE_SHOT
)
handle
->
flags
|=
UV_SIGNAL_ONE_SHOT_DISPATCHED
;
}
LeaveCriticalSection
(
&
uv__signal_lock
);
...
...
@@ -213,7 +213,7 @@ int uv__signal_start(uv_signal_t* handle,
handle
->
signum
=
signum
;
if
(
oneshot
)
handle
->
flags
|=
UV_
_
SIGNAL_ONE_SHOT
;
handle
->
flags
|=
UV_SIGNAL_ONE_SHOT
;
RB_INSERT
(
uv_signal_tree_s
,
&
uv__signal_tree
,
handle
);
...
...
@@ -243,10 +243,10 @@ void uv_process_signal_req(uv_loop_t* loop, uv_signal_t* handle,
if
(
dispatched_signum
==
handle
->
signum
)
handle
->
signal_cb
(
handle
,
dispatched_signum
);
if
(
handle
->
flags
&
UV_
_
SIGNAL_ONE_SHOT
)
if
(
handle
->
flags
&
UV_SIGNAL_ONE_SHOT
)
uv_signal_stop
(
handle
);
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
/* When it is closing, it must be stopped at this point. */
assert
(
handle
->
signum
==
0
);
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
...
...
@@ -265,7 +265,7 @@ void uv_signal_close(uv_loop_t* loop, uv_signal_t* handle) {
void
uv_signal_endgame
(
uv_loop_t
*
loop
,
uv_signal_t
*
handle
)
{
assert
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
);
assert
(
handle
->
flags
&
UV_HANDLE_CLOSING
);
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
assert
(
handle
->
signum
==
0
);
...
...
deps/libuv/src/win/stream.c
View file @
256a3fbf
...
...
@@ -176,7 +176,7 @@ int uv_write2(uv_write_t* req,
int
uv_try_write
(
uv_stream_t
*
stream
,
const
uv_buf_t
bufs
[],
unsigned
int
nbufs
)
{
if
(
stream
->
flags
&
UV_
_
HANDLE_CLOSING
)
if
(
stream
->
flags
&
UV_HANDLE_CLOSING
)
return
UV_EBADF
;
if
(
!
(
stream
->
flags
&
UV_HANDLE_WRITABLE
))
return
UV_EPIPE
;
...
...
deps/libuv/src/win/tcp.c
View file @
256a3fbf
...
...
@@ -217,7 +217,7 @@ void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle) {
UNREGISTER_HANDLE_REQ
(
loop
,
handle
,
handle
->
stream
.
conn
.
shutdown_req
);
err
=
0
;
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
err
=
ERROR_OPERATION_ABORTED
;
}
else
if
(
shutdown
(
handle
->
socket
,
SD_SEND
)
==
SOCKET_ERROR
)
{
err
=
WSAGetLastError
();
...
...
@@ -233,7 +233,7 @@ void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle) {
return
;
}
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
&&
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
&&
handle
->
reqs_pending
==
0
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
...
...
@@ -680,7 +680,7 @@ int uv_tcp_accept(uv_tcp_t* server, uv_tcp_t* client) {
req
->
next_pending
=
NULL
;
req
->
accept_socket
=
INVALID_SOCKET
;
if
(
!
(
server
->
flags
&
UV_
_
HANDLE_CLOSING
))
{
if
(
!
(
server
->
flags
&
UV_HANDLE_CLOSING
))
{
/* Check if we're in a middle of changing the number of pending accepts. */
if
(
!
(
server
->
flags
&
UV_HANDLE_TCP_ACCEPT_STATE_CHANGING
))
{
uv_tcp_queue_accept
(
server
,
req
);
...
...
@@ -1166,7 +1166,7 @@ void uv_process_tcp_connect_req(uv_loop_t* loop, uv_tcp_t* handle,
err
=
0
;
if
(
REQ_SUCCESS
(
req
))
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
/* use UV_ECANCELED for consistency with Unix */
err
=
ERROR_OPERATION_ABORTED
;
}
else
if
(
setsockopt
(
handle
->
socket
,
...
...
deps/libuv/src/win/thread.c
View file @
256a3fbf
...
...
@@ -26,15 +26,6 @@
#include "uv.h"
#include "internal.h"
static
int
uv_cond_condvar_init
(
uv_cond_t
*
cond
);
static
void
uv_cond_condvar_destroy
(
uv_cond_t
*
cond
);
static
void
uv_cond_condvar_signal
(
uv_cond_t
*
cond
);
static
void
uv_cond_condvar_broadcast
(
uv_cond_t
*
cond
);
static
void
uv_cond_condvar_wait
(
uv_cond_t
*
cond
,
uv_mutex_t
*
mutex
);
static
int
uv_cond_condvar_timedwait
(
uv_cond_t
*
cond
,
uv_mutex_t
*
mutex
,
uint64_t
timeout
);
static
void
uv__once_inner
(
uv_once_t
*
guard
,
void
(
*
callback
)(
void
))
{
DWORD
result
;
HANDLE
existing_event
,
created_event
;
...
...
@@ -374,7 +365,7 @@ int uv_cond_init(uv_cond_t* cond) {
void
uv_cond_destroy
(
uv_cond_t
*
cond
)
{
/* nothing to do */
UV__UNUSED
(
cond
)
;
(
void
)
&
cond
;
}
...
...
deps/libuv/src/win/timer.c
deleted
100644 → 0
View file @
d15664a5
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#include <assert.h>
#include <limits.h>
#include "uv.h"
#include "internal.h"
#include "uv/tree.h"
#include "handle-inl.h"
/* The number of milliseconds in one second. */
#define UV__MILLISEC 1000
void
uv_update_time
(
uv_loop_t
*
loop
)
{
uint64_t
new_time
=
uv__hrtime
(
UV__MILLISEC
);
assert
(
new_time
>=
loop
->
time
);
loop
->
time
=
new_time
;
}
static
int
uv_timer_compare
(
uv_timer_t
*
a
,
uv_timer_t
*
b
)
{
if
(
a
->
due
<
b
->
due
)
return
-
1
;
if
(
a
->
due
>
b
->
due
)
return
1
;
/*
* compare start_id when both has the same due. start_id is
* allocated with loop->timer_counter in uv_timer_start().
*/
if
(
a
->
start_id
<
b
->
start_id
)
return
-
1
;
if
(
a
->
start_id
>
b
->
start_id
)
return
1
;
return
0
;
}
RB_GENERATE_STATIC
(
uv_timer_tree_s
,
uv_timer_s
,
tree_entry
,
uv_timer_compare
)
int
uv_timer_init
(
uv_loop_t
*
loop
,
uv_timer_t
*
handle
)
{
uv__handle_init
(
loop
,
(
uv_handle_t
*
)
handle
,
UV_TIMER
);
handle
->
timer_cb
=
NULL
;
handle
->
repeat
=
0
;
return
0
;
}
void
uv_timer_endgame
(
uv_loop_t
*
loop
,
uv_timer_t
*
handle
)
{
if
(
handle
->
flags
&
UV__HANDLE_CLOSING
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
uv__handle_close
(
handle
);
}
}
static
uint64_t
get_clamped_due_time
(
uint64_t
loop_time
,
uint64_t
timeout
)
{
uint64_t
clamped_timeout
;
clamped_timeout
=
loop_time
+
timeout
;
if
(
clamped_timeout
<
timeout
)
clamped_timeout
=
(
uint64_t
)
-
1
;
return
clamped_timeout
;
}
int
uv_timer_start
(
uv_timer_t
*
handle
,
uv_timer_cb
timer_cb
,
uint64_t
timeout
,
uint64_t
repeat
)
{
uv_loop_t
*
loop
=
handle
->
loop
;
uv_timer_t
*
old
;
if
(
timer_cb
==
NULL
)
return
UV_EINVAL
;
if
(
uv__is_active
(
handle
))
uv_timer_stop
(
handle
);
handle
->
timer_cb
=
timer_cb
;
handle
->
due
=
get_clamped_due_time
(
loop
->
time
,
timeout
);
handle
->
repeat
=
repeat
;
uv__handle_start
(
handle
);
/* start_id is the second index to be compared in uv__timer_cmp() */
handle
->
start_id
=
handle
->
loop
->
timer_counter
++
;
old
=
RB_INSERT
(
uv_timer_tree_s
,
&
loop
->
timers
,
handle
);
assert
(
old
==
NULL
);
return
0
;
}
int
uv_timer_stop
(
uv_timer_t
*
handle
)
{
uv_loop_t
*
loop
=
handle
->
loop
;
if
(
!
uv__is_active
(
handle
))
return
0
;
RB_REMOVE
(
uv_timer_tree_s
,
&
loop
->
timers
,
handle
);
uv__handle_stop
(
handle
);
return
0
;
}
int
uv_timer_again
(
uv_timer_t
*
handle
)
{
/* If timer_cb is NULL that means that the timer was never started. */
if
(
!
handle
->
timer_cb
)
{
return
UV_EINVAL
;
}
if
(
handle
->
repeat
)
{
uv_timer_stop
(
handle
);
uv_timer_start
(
handle
,
handle
->
timer_cb
,
handle
->
repeat
,
handle
->
repeat
);
}
return
0
;
}
void
uv_timer_set_repeat
(
uv_timer_t
*
handle
,
uint64_t
repeat
)
{
assert
(
handle
->
type
==
UV_TIMER
);
handle
->
repeat
=
repeat
;
}
uint64_t
uv_timer_get_repeat
(
const
uv_timer_t
*
handle
)
{
assert
(
handle
->
type
==
UV_TIMER
);
return
handle
->
repeat
;
}
DWORD
uv__next_timeout
(
const
uv_loop_t
*
loop
)
{
uv_timer_t
*
timer
;
int64_t
delta
;
/* Check if there are any running timers
* Need to cast away const first, since RB_MIN doesn't know what we are
* going to do with this return value, it can't be marked const
*/
timer
=
RB_MIN
(
uv_timer_tree_s
,
&
((
uv_loop_t
*
)
loop
)
->
timers
);
if
(
timer
)
{
delta
=
timer
->
due
-
loop
->
time
;
if
(
delta
>=
UINT_MAX
-
1
)
{
/* A timeout value of UINT_MAX means infinite, so that's no good. */
return
UINT_MAX
-
1
;
}
else
if
(
delta
<
0
)
{
/* Negative timeout values are not allowed */
return
0
;
}
else
{
return
(
DWORD
)
delta
;
}
}
else
{
/* No timers */
return
INFINITE
;
}
}
void
uv_process_timers
(
uv_loop_t
*
loop
)
{
uv_timer_t
*
timer
;
/* Call timer callbacks */
for
(
timer
=
RB_MIN
(
uv_timer_tree_s
,
&
loop
->
timers
);
timer
!=
NULL
&&
timer
->
due
<=
loop
->
time
;
timer
=
RB_MIN
(
uv_timer_tree_s
,
&
loop
->
timers
))
{
uv_timer_stop
(
timer
);
uv_timer_again
(
timer
);
timer
->
timer_cb
((
uv_timer_t
*
)
timer
);
}
}
deps/libuv/src/win/tty.c
View file @
256a3fbf
...
...
@@ -2208,7 +2208,7 @@ void uv_tty_endgame(uv_loop_t* loop, uv_tty_t* handle) {
/* TTY shutdown is really just a no-op */
if
(
handle
->
stream
.
conn
.
shutdown_req
->
cb
)
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
)
{
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
)
{
handle
->
stream
.
conn
.
shutdown_req
->
cb
(
handle
->
stream
.
conn
.
shutdown_req
,
UV_ECANCELED
);
}
else
{
handle
->
stream
.
conn
.
shutdown_req
->
cb
(
handle
->
stream
.
conn
.
shutdown_req
,
0
);
...
...
@@ -2221,7 +2221,7 @@ void uv_tty_endgame(uv_loop_t* loop, uv_tty_t* handle) {
return
;
}
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
&&
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
&&
handle
->
reqs_pending
==
0
)
{
/* The wait handle used for raw reading should be unregistered when the
* wait callback runs. */
...
...
deps/libuv/src/win/udp.c
View file @
256a3fbf
...
...
@@ -188,7 +188,7 @@ void uv_udp_close(uv_loop_t* loop, uv_udp_t* handle) {
void
uv_udp_endgame
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
)
{
if
(
handle
->
flags
&
UV_
_
HANDLE_CLOSING
&&
if
(
handle
->
flags
&
UV_HANDLE_CLOSING
&&
handle
->
reqs_pending
==
0
)
{
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSED
));
uv__handle_close
(
handle
);
...
...
deps/libuv/uv.gyp
View file @
256a3fbf
...
...
@@ -73,6 +73,7 @@
'src/inet.c',
'src/queue.h',
'src/threadpool.c',
'src/timer.c',
'src/uv-data-getter-setters.c',
'src/uv-common.c',
'src/uv-common.h',
...
...
@@ -123,7 +124,6 @@
'src/win/stream-inl.h',
'src/win/tcp.c',
'src/win/tty.c',
'src/win/timer.c',
'src/win/udp.c',
'src/win/util.c',
'src/win/winapi.c',
...
...
@@ -168,7 +168,6 @@
'src/unix/stream.c',
'src/unix/tcp.c',
'src/unix/thread.c',
'src/unix/timer.c',
'src/unix/tty.c',
'src/unix/udp.c',
],
...
...
src/gevent/libuv/_corecffi_build.py
View file @
256a3fbf
...
...
@@ -81,6 +81,7 @@ LIBUV_SOURCES = [
_libuv_source
(
'uv-common.c'
),
_libuv_source
(
'version.c'
),
_libuv_source
(
'uv-data-getter-setters.c'
),
_libuv_source
(
'timer.c'
),
]
if
WIN
:
...
...
@@ -116,7 +117,6 @@ if WIN:
_libuv_source
(
'win/stream.c'
),
_libuv_source
(
'win/tcp.c'
),
_libuv_source
(
'win/thread.c'
),
_libuv_source
(
'win/timer.c'
),
_libuv_source
(
'win/tty.c'
),
_libuv_source
(
'win/udp.c'
),
_libuv_source
(
'win/util.c'
),
...
...
@@ -140,7 +140,6 @@ else:
_libuv_source
(
'unix/stream.c'
),
_libuv_source
(
'unix/tcp.c'
),
_libuv_source
(
'unix/thread.c'
),
_libuv_source
(
'unix/timer.c'
),
_libuv_source
(
'unix/tty.c'
),
_libuv_source
(
'unix/udp.c'
),
]
...
...
Write
Preview
Markdown
is supported
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