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
6026ec09
Commit
6026ec09
authored
May 20, 2020
by
Jason Madden
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update to libuv 1.38
parent
706833bf
Changes
38
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
838 additions
and
402 deletions
+838
-402
deps/README.rst
deps/README.rst
+1
-1
deps/libuv/.gitignore
deps/libuv/.gitignore
+1
-0
deps/libuv/AUTHORS
deps/libuv/AUTHORS
+8
-0
deps/libuv/CMakeLists.txt
deps/libuv/CMakeLists.txt
+59
-20
deps/libuv/ChangeLog
deps/libuv/ChangeLog
+83
-1
deps/libuv/Makefile.am
deps/libuv/Makefile.am
+2
-1
deps/libuv/configure.ac
deps/libuv/configure.ac
+11
-9
deps/libuv/include/uv.h
deps/libuv/include/uv.h
+14
-6
deps/libuv/include/uv/version.h
deps/libuv/include/uv/version.h
+1
-1
deps/libuv/src/threadpool.c
deps/libuv/src/threadpool.c
+2
-2
deps/libuv/src/timer.c
deps/libuv/src/timer.c
+1
-6
deps/libuv/src/unix/aix.c
deps/libuv/src/unix/aix.c
+1
-1
deps/libuv/src/unix/async.c
deps/libuv/src/unix/async.c
+23
-10
deps/libuv/src/unix/bsd-proctitle.c
deps/libuv/src/unix/bsd-proctitle.c
+7
-0
deps/libuv/src/unix/darwin-proctitle.c
deps/libuv/src/unix/darwin-proctitle.c
+1
-2
deps/libuv/src/unix/darwin-stub.h
deps/libuv/src/unix/darwin-stub.h
+97
-0
deps/libuv/src/unix/fs.c
deps/libuv/src/unix/fs.c
+12
-4
deps/libuv/src/unix/fsevents.c
deps/libuv/src/unix/fsevents.c
+25
-29
deps/libuv/src/unix/internal.h
deps/libuv/src/unix/internal.h
+0
-2
deps/libuv/src/unix/linux-core.c
deps/libuv/src/unix/linux-core.c
+11
-9
deps/libuv/src/unix/loop.c
deps/libuv/src/unix/loop.c
+2
-0
deps/libuv/src/unix/no-proctitle.c
deps/libuv/src/unix/no-proctitle.c
+3
-0
deps/libuv/src/unix/proctitle.c
deps/libuv/src/unix/proctitle.c
+1
-1
deps/libuv/src/unix/signal.c
deps/libuv/src/unix/signal.c
+2
-2
deps/libuv/src/unix/thread.c
deps/libuv/src/unix/thread.c
+5
-4
deps/libuv/src/unix/udp.c
deps/libuv/src/unix/udp.c
+35
-54
deps/libuv/src/uv-common.c
deps/libuv/src/uv-common.c
+46
-0
deps/libuv/src/uv-common.h
deps/libuv/src/uv-common.h
+10
-0
deps/libuv/src/win/core.c
deps/libuv/src/win/core.c
+6
-6
deps/libuv/src/win/error.c
deps/libuv/src/win/error.c
+1
-0
deps/libuv/src/win/fs-event.c
deps/libuv/src/win/fs-event.c
+26
-7
deps/libuv/src/win/fs.c
deps/libuv/src/win/fs.c
+116
-35
deps/libuv/src/win/poll.c
deps/libuv/src/win/poll.c
+62
-121
deps/libuv/src/win/signal.c
deps/libuv/src/win/signal.c
+5
-0
deps/libuv/src/win/udp.c
deps/libuv/src/win/udp.c
+8
-18
deps/libuv/src/win/util.c
deps/libuv/src/win/util.c
+142
-50
deps/libuv/src/win/winapi.h
deps/libuv/src/win/winapi.h
+7
-0
docs/changes/1621.feature
docs/changes/1621.feature
+1
-0
No files found.
deps/README.rst
View file @
6026ec09
...
...
@@ -76,7 +76,7 @@ Updating libuv
rm -rf libuv/test/*.[ch] libuv/test/test.gyp # must leave the fixtures/ dir
rm -rf libuv/tools
rm -f libuv/android-configure*
rm -f libuv/uv_win_longpath.manifest
At this point there might be new files in libuv that need added to git
and the build process. Evaluate those and add them to git and to
...
...
deps/libuv/.gitignore
View file @
6026ec09
...
...
@@ -67,6 +67,7 @@ ipch
# Clion / IntelliJ project files
/.idea/
cmake-build-debug/
*.xcodeproj
*.xcworkspace
...
...
deps/libuv/AUTHORS
View file @
6026ec09
...
...
@@ -424,3 +424,11 @@ Lin Zhang <linroid@gmail.com>
Sk Sajidul Kadir <sheikh.sajid522@gmail.com>
twosee <twose@qq.com>
Rikard Falkeborn <rikard.falkeborn@gmail.com>
Yash Ladha <yashladhapankajladha123@gmail.com>
James Ross <git@james-ross.co.uk>
Colin Finck <colin@reactos.org>
Shohei YOSHIDA <syohex@gmail.com>
Philip Chimento <philip.chimento@gmail.com>
Michal Artazov <michal@artazov.cz>
Jeroen Roovers <jer@gentoo.org>
MasterDuke17 <MasterDuke17@users.noreply.github.com>
deps/libuv/CMakeLists.txt
View file @
6026ec09
...
...
@@ -24,6 +24,12 @@ cmake_dependent_option(LIBUV_BUILD_BENCH
"Build the benchmarks when building unit tests and we are the root project"
ON
"LIBUV_BUILD_TESTS"
OFF
)
# Qemu Build
option
(
QEMU
"build for qemu"
OFF
)
if
(
QEMU
)
add_definitions
(
-D__QEMU__=1
)
endif
()
# Compiler check
string
(
CONCAT is-msvc $<OR:
$<C_COMPILER_ID:MSVC>,
...
...
@@ -31,6 +37,18 @@ string(CONCAT is-msvc $<OR:
>
)
check_c_compiler_flag
(
/W4 UV_LINT_W4
)
check_c_compiler_flag
(
/wd4100 UV_LINT_NO_UNUSED_PARAMETER_MSVC
)
check_c_compiler_flag
(
/wd4127 UV_LINT_NO_CONDITIONAL_CONSTANT_MSVC
)
check_c_compiler_flag
(
/wd4201 UV_LINT_NO_NONSTANDARD_MSVC
)
check_c_compiler_flag
(
/wd4206 UV_LINT_NO_NONSTANDARD_EMPTY_TU_MSVC
)
check_c_compiler_flag
(
/wd4210 UV_LINT_NO_NONSTANDARD_FILE_SCOPE_MSVC
)
check_c_compiler_flag
(
/wd4232 UV_LINT_NO_NONSTANDARD_NONSTATIC_DLIMPORT_MSVC
)
check_c_compiler_flag
(
/wd4456 UV_LINT_NO_HIDES_LOCAL
)
check_c_compiler_flag
(
/wd4457 UV_LINT_NO_HIDES_PARAM
)
check_c_compiler_flag
(
/wd4459 UV_LINT_NO_HIDES_GLOBAL
)
check_c_compiler_flag
(
/wd4706 UV_LINT_NO_CONDITIONAL_ASSIGNMENT_MSVC
)
check_c_compiler_flag
(
/wd4996 UV_LINT_NO_UNSAFE_MSVC
)
check_c_compiler_flag
(
-Wall UV_LINT_WALL
)
# DO NOT use this under MSVC
# TODO: Place these into its own function
...
...
@@ -38,10 +56,21 @@ check_c_compiler_flag(-Wno-unused-parameter UV_LINT_NO_UNUSED_PARAMETER)
check_c_compiler_flag
(
-Wstrict-prototypes UV_LINT_STRICT_PROTOTYPES
)
check_c_compiler_flag
(
-Wextra UV_LINT_EXTRA
)
set
(
lint-no-unused-parameter $<$<BOOL:
${
UV_LINT_NO_UNUSED_PARAMETER
}
>:-Wno-unused-parameter>
)
set
(
lint-no-unused-parameter $<$<BOOL:
${
UV_LINT_NO_UNUSED_PARAMETER
}
>:-Wno-unused-parameter>
)
set
(
lint-strict-prototypes $<$<BOOL:
${
UV_LINT_STRICT_PROTOTYPES
}
>:-Wstrict-prototypes>
)
set
(
lint-extra $<$<BOOL:
${
UV_LINT_EXTRA
}
>:-Wextra>
)
set
(
lint-w4 $<$<BOOL:
${
UV_LINT_W4
}
>:/W4>
)
set
(
lint-no-unused-parameter-msvc $<$<BOOL:
${
UV_LINT_NO_UNUSED_PARAMETER_MSVC
}
>:/wd4100>
)
set
(
lint-no-conditional-constant-msvc $<$<BOOL:
${
UV_LINT_NO_CONDITIONAL_CONSTANT_MSVC
}
>:/wd4127>
)
set
(
lint-no-nonstandard-msvc $<$<BOOL:
${
UV_LINT_NO_NONSTANDARD_MSVC
}
>:/wd4201>
)
set
(
lint-no-nonstandard-empty-tu-msvc $<$<BOOL:
${
UV_LINT_NO_NONSTANDARD_EMPTY_TU_MSVC
}
>:/wd4206>
)
set
(
lint-no-nonstandard-file-scope-msvc $<$<BOOL:
${
UV_LINT_NO_NONSTANDARD_FILE_SCOPE_MSVC
}
>:/wd4210>
)
set
(
lint-no-nonstandard-nonstatic-dlimport-msvc $<$<BOOL:
${
UV_LINT_NO_NONSTANDARD_NONSTATIC_DLIMPORT_MSVC
}
>:/wd4232>
)
set
(
lint-no-hides-local-msvc $<$<BOOL:
${
UV_LINT_NO_HIDES_LOCAL
}
>:/wd4456>
)
set
(
lint-no-hides-param-msvc $<$<BOOL:
${
UV_LINT_NO_HIDES_PARAM
}
>:/wd4457>
)
set
(
lint-no-hides-global-msvc $<$<BOOL:
${
UV_LINT_NO_HIDES_GLOBAL
}
>:/wd4459>
)
set
(
lint-no-conditional-assignment-msvc $<$<BOOL:
${
UV_LINT_NO_CONDITIONAL_ASSIGNMENT_MSVC
}
>:/wd4706>
)
set
(
lint-no-unsafe-msvc $<$<BOOL:
${
UV_LINT_NO_UNSAFE_MSVC
}
>:/wd4996>
)
# Unfortunately, this one is complicated because MSVC and clang-cl support -Wall
# but using it is like calling -Weverything
string
(
CONCAT lint-default $<
...
...
@@ -50,6 +79,17 @@ string(CONCAT lint-default $<
list
(
APPEND uv_cflags
${
lint-strict-prototypes
}
${
lint-extra
}
${
lint-default
}
${
lint-w4
}
)
list
(
APPEND uv_cflags
${
lint-no-unused-parameter
}
)
list
(
APPEND uv_cflags
${
lint-no-unused-parameter-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-conditional-constant-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-nonstandard-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-nonstandard-empty-tu-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-nonstandard-file-scope-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-nonstandard-nonstatic-dlimport-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-hides-local-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-hides-param-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-hides-global-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-conditional-assignment-msvc
}
)
list
(
APPEND uv_cflags
${
lint-no-unsafe-msvc
}
)
set
(
uv_sources
src/fs-poll.c
...
...
@@ -64,22 +104,9 @@ set(uv_sources
src/version.c
)
if
(
WIN32
)
if
(
CMAKE_SYSTEM_VERSION VERSION_GREATER 10
)
# Windows 10
set
(
windows-version 0x0A00
)
elseif
(
CMAKE_SYSTEM_VERSION VERSION_GREATER 6.3
)
# Windows 8.1
set
(
windows-version 0x0603
)
elseif
(
CMAKE_SYSTEM_VERSION VERSION_GREATER 6.2
)
# Windows 8
set
(
windows-version 0x0602
)
elseif
(
CMAKE_SYSTEM_VERSION VERSION_GREATER 6.1
)
# Windows 7
set
(
windows-version 0x0601
)
elseif
(
CMAKE_SYSTEM_VERSION VERSION_GREATER 6.0
)
# Windows Vista
set
(
windows-version 0x0600
)
else
()
message
(
FATAL_ERROR
"Windows Vista is the minimum version supported"
)
endif
()
list
(
APPEND uv_defines WIN32_LEAN_AND_MEAN _WIN32_WINNT=
${
windows-version
}
)
list
(
APPEND uv_defines WIN32_LEAN_AND_MEAN _WIN32_WINNT=0x0600
)
list
(
APPEND uv_libraries
$<$<STREQUAL:
${
windows-version
}
,0x0600>:psapi>
psapi
iphlpapi
userenv
ws2_32
)
...
...
@@ -155,7 +182,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
endif
()
if
(
CMAKE_SYSTEM_NAME STREQUAL
"Android"
)
list
(
APPEND uv_libs dl
)
list
(
APPEND uv_lib
rarie
s dl
)
list
(
APPEND uv_sources
src/unix/android-ifaddrs.c
src/unix/linux-core.c
...
...
@@ -489,7 +516,7 @@ if(LIBUV_BUILD_TESTS)
test/test-walk-handles.c
test/test-watcher-cross-stop.c
)
add_executable
(
uv_run_tests
${
uv_test_sources
}
)
add_executable
(
uv_run_tests
${
uv_test_sources
}
uv_win_longpath.manifest
)
target_compile_definitions
(
uv_run_tests
PRIVATE
${
uv_defines
}
USING_UV_SHARED=1
)
target_compile_options
(
uv_run_tests PRIVATE
${
uv_cflags
}
)
...
...
@@ -501,10 +528,14 @@ if(LIBUV_BUILD_TESTS)
set_tests_properties
(
uv_test PROPERTIES ENVIRONMENT
"LIBPATH=
${
CMAKE_BINARY_DIR
}
:$ENV{LIBPATH}"
)
endif
()
add_executable
(
uv_run_tests_a
${
uv_test_sources
}
)
add_executable
(
uv_run_tests_a
${
uv_test_sources
}
uv_win_longpath.manifest
)
target_compile_definitions
(
uv_run_tests_a PRIVATE
${
uv_defines
}
)
target_compile_options
(
uv_run_tests_a PRIVATE
${
uv_cflags
}
)
target_link_libraries
(
uv_run_tests_a uv_a
${
uv_test_libraries
}
)
if
(
QEMU
)
target_link_libraries
(
uv_run_tests_a uv_a
${
uv_test_libraries
}
-static
)
else
()
target_link_libraries
(
uv_run_tests_a uv_a
${
uv_test_libraries
}
)
endif
()
add_test
(
NAME uv_test_a
COMMAND uv_run_tests_a
WORKING_DIRECTORY
${
CMAKE_CURRENT_SOURCE_DIR
}
)
...
...
@@ -544,3 +575,11 @@ if(WIN32)
RUNTIME DESTINATION lib/$<CONFIG>
ARCHIVE DESTINATION lib/$<CONFIG>
)
endif
()
message
(
STATUS
"summary of build options:
Install prefix:
${
CMAKE_INSTALL_PREFIX
}
Target system:
${
CMAKE_SYSTEM_NAME
}
Compiler:
C compiler:
${
CMAKE_C_COMPILER
}
CFLAGS:
${
CMAKE_C_FLAGS_
${
_build_type
}}
${
CMAKE_C_FLAGS
}
"
)
deps/libuv/ChangeLog
View file @
6026ec09
2020.04.16, Version 1.36.0 (Stable)
2020.05.18, Version 1.38.0 (Stable)
Changes since version 1.37.0:
* test: skip poll_duplex and poll_unidirectional on PASE (Xu Meng)
* linux: make cpu_times consistently be milliseconds (James Ross)
* win: DRY uv_poll_start() and uv_poll_stop() (Ben Noordhuis)
* win: DRY uv_poll_close() (Ben Noordhuis)
* unix,win: add uv_library_shutdown() (Ben Noordhuis)
* unix: yield cpu when spinlocking on async handle (Ben Noordhuis)
* win: remove dep on GetQueuedCompletionStatusEx (Colin Finck)
* doc: correct source lines (Shohei YOSHIDA)
* build,android: fix typo (twosee)
* doc: uv_cancel() handles uv_random_t requests (Philip Chimento)
* doc: fix unescaped character (Philip Chimento)
* build,cmake: fix compilation on old MinGW (erw7)
* build: remove unnessesary MSVC warnings (Bartosz Sosnowski)
* win: make uv_udp_init_ex() accept UV_UDP_RECVMMSG (Ben Noordhuis)
* unix: simplify uv__udp_init_ex() (Ben Noordhuis)
* win: remove MAX_PATH limitations (Bartosz Sosnowski)
* build, win: add long path aware manifest (Bartosz Sosnowski)
* doc: check/idle/prepare functions always succeed (Ben Noordhuis)
* darwin: fix build with non-apple compilers (Ben Noordhuis)
* win: support environment variables > 32767 chars (Ben Noordhuis)
* unix: fully initialize struct msghdr (Ben Noordhuis)
* doc: add uv_replace_allocator thread safety warning (twosee)
* unix: fix int overflow when copying large files (Michal Artazov)
* fs: report original error (Bartosz Sosnowski)
* win, fs: add IO_REPARSE_TAG_APPEXECLINK support (Bartosz Sosnowski)
* doc: fix formatting (Ben Noordhuis)
* unix: fix memory leak when uv_loop_init() fails (Anna Henningsen)
* unix: shrink uv_udp_set_source_membership() stack (Ben Noordhuis)
* unix,win: fix wrong sizeof argument to memcpy() (Ben Noordhuis)
* build: check for libraries not provided by libc (Jeroen Roovers)
* doc: fix the order of arguments to calloc() (MasterDuke17)
* unix: don't abort when getrlimit() fails (Ben Noordhuis)
* test: support common user profile on IBMi (Xu Meng)
* build: test on more platforms via QEMU in CI (gengjiawen)
2020.04.20, Version 1.37.0 (Stable), 02a9e1be252b623ee032a3137c0b0c94afbe6809
Changes since version 1.36.0:
* timer: remove redundant check in heap compare (Yash Ladha)
* udp: add flag to enable recvmmsg(2) explicitly (Saúl Ibarra Corretgé)
2020.04.16, Version 1.36.0 (Stable), 533b738838ad8407032e14b6772b29ef9af63cfa
Changes since version 1.35.0:
...
...
deps/libuv/Makefile.am
View file @
6026ec09
...
...
@@ -409,8 +409,9 @@ uvinclude_HEADERS += include/uv/darwin.h
libuv_la_CFLAGS
+=
-D_DARWIN_USE_64_BIT_INODE
=
1
libuv_la_CFLAGS
+=
-D_DARWIN_UNLIMITED_SELECT
=
1
libuv_la_SOURCES
+=
src/unix/bsd-ifaddrs.c
\
src/unix/darwin.c
\
src/unix/darwin-proctitle.c
\
src/unix/darwin-stub.h
\
src/unix/darwin.c
\
src/unix/fsevents.c
\
src/unix/kqueue.c
\
src/unix/proctitle.c
\
...
...
deps/libuv/configure.ac
View file @
6026ec09
...
...
@@ -13,7 +13,7 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
AC_PREREQ(2.57)
AC_INIT([libuv], [1.3
6
.0], [https://github.com/libuv/libuv/issues])
AC_INIT([libuv], [1.3
8
.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])
...
...
@@ -38,15 +38,17 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AC_PROG_LIBTOOL
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
LT_INIT
# TODO(bnoordhuis) Check for -pthread vs. -pthreads
AX_PTHREAD([
LIBS="$LIBS $PTHREAD_LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
])
AC_CHECK_LIB([dl], [dlopen])
AC_CHECK_LIB([kstat], [kstat_lookup])
AC_CHECK_LIB([nsl], [gethostbyname])
AC_CHECK_LIB([perfstat], [perfstat_cpu])
AC_CHECK_LIB([pthread], [pthread_mutex_init])
AC_CHECK_LIB([rt], [clock_gettime])
AC_CHECK_LIB([sendfile], [sendfile])
AC_CHECK_LIB([socket], [socket])
AC_SEARCH_LIBS([kstat_lookup], [kstat])
AC_SEARCH_LIBS([gethostbyname], [nsl])
AC_SEARCH_LIBS([perfstat_cpu], [perfstat])
AC_SEARCH_LIBS([clock_gettime], [rt])
AC_SEARCH_LIBS([sendfile], [sendfile])
AC_SEARCH_LIBS([socket], [socket])
AC_SYS_LARGEFILE
AM_CONDITIONAL([AIX], [AS_CASE([$host_os],[aix*], [true], [false])])
AM_CONDITIONAL([ANDROID], [AS_CASE([$host_os],[linux-android*],[true], [false])])
...
...
deps/libuv/include/uv.h
View file @
6026ec09
...
...
@@ -265,6 +265,8 @@ typedef void* (*uv_realloc_func)(void* ptr, size_t size);
typedef
void
*
(
*
uv_calloc_func
)(
size_t
count
,
size_t
size
);
typedef
void
(
*
uv_free_func
)(
void
*
ptr
);
UV_EXTERN
void
uv_library_shutdown
(
void
);
UV_EXTERN
int
uv_replace_allocator
(
uv_malloc_func
malloc_func
,
uv_realloc_func
realloc_func
,
uv_calloc_func
calloc_func
,
...
...
@@ -610,7 +612,12 @@ enum uv_udp_flags {
* Indicates that the message was received by recvmmsg, so the buffer provided
* must not be freed by the recv_cb callback.
*/
UV_UDP_MMSG_CHUNK
=
8
UV_UDP_MMSG_CHUNK
=
8
,
/*
* Indicates that recvmmsg should be used, if available.
*/
UV_UDP_RECVMMSG
=
256
};
typedef
void
(
*
uv_udp_send_cb
)(
uv_udp_send_t
*
req
,
int
status
);
...
...
@@ -1064,11 +1071,11 @@ UV_EXTERN int uv_cancel(uv_req_t* req);
struct
uv_cpu_times_s
{
uint64_t
user
;
uint64_t
nice
;
uint64_t
sys
;
uint64_t
idle
;
uint64_t
irq
;
uint64_t
user
;
/* milliseconds */
uint64_t
nice
;
/* milliseconds */
uint64_t
sys
;
/* milliseconds */
uint64_t
idle
;
/* milliseconds */
uint64_t
irq
;
/* milliseconds */
};
struct
uv_cpu_info_s
{
...
...
@@ -1300,6 +1307,7 @@ struct uv_fs_s {
UV_EXTERN
uv_fs_type
uv_fs_get_type
(
const
uv_fs_t
*
);
UV_EXTERN
ssize_t
uv_fs_get_result
(
const
uv_fs_t
*
);
UV_EXTERN
int
uv_fs_get_system_error
(
const
uv_fs_t
*
);
UV_EXTERN
void
*
uv_fs_get_ptr
(
const
uv_fs_t
*
);
UV_EXTERN
const
char
*
uv_fs_get_path
(
const
uv_fs_t
*
);
UV_EXTERN
uv_stat_t
*
uv_fs_get_statbuf
(
uv_fs_t
*
);
...
...
deps/libuv/include/uv/version.h
View file @
6026ec09
...
...
@@ -31,7 +31,7 @@
*/
#define UV_VERSION_MAJOR 1
#define UV_VERSION_MINOR 3
6
#define UV_VERSION_MINOR 3
8
#define UV_VERSION_PATCH 0
#define UV_VERSION_IS_RELEASE 1
#define UV_VERSION_SUFFIX ""
...
...
deps/libuv/src/threadpool.c
View file @
6026ec09
...
...
@@ -160,8 +160,8 @@ static void post(QUEUE* q, enum uv__work_kind kind) {
}
void
uv__threadpool_cleanup
(
void
)
{
#ifndef _WIN32
UV_DESTRUCTOR
(
static
void
cleanup
(
void
))
{
unsigned
int
i
;
if
(
nthreads
==
0
)
...
...
@@ -181,8 +181,8 @@ UV_DESTRUCTOR(static void cleanup(void)) {
threads
=
NULL
;
nthreads
=
0
;
}
#endif
}
static
void
init_threads
(
void
)
{
...
...
deps/libuv/src/timer.c
View file @
6026ec09
...
...
@@ -51,12 +51,7 @@ static int timer_less_than(const struct heap_node* ha,
/* Compare start_id when both have the same timeout. start_id is
* allocated with loop->timer_counter in uv_timer_start().
*/
if
(
a
->
start_id
<
b
->
start_id
)
return
1
;
if
(
b
->
start_id
<
a
->
start_id
)
return
0
;
return
0
;
return
a
->
start_id
<
b
->
start_id
;
}
...
...
deps/libuv/src/unix/aix.c
View file @
6026ec09
...
...
@@ -926,7 +926,7 @@ int uv_get_process_title(char* buffer, size_t size) {
}
UV_DESTRUCTOR
(
static
void
free_args_mem
(
void
)
)
{
void
uv__process_title_cleanup
(
void
)
{
uv__free
(
args_mem
);
/* Keep valgrind happy. */
args_mem
=
NULL
;
}
...
...
deps/libuv/src/unix/async.c
View file @
6026ec09
...
...
@@ -32,6 +32,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sched.h>
/* sched_yield() */
#ifdef __linux__
#include <sys/eventfd.h>
...
...
@@ -81,20 +82,32 @@ int uv_async_send(uv_async_t* handle) {
/* Only call this from the event loop thread. */
static
int
uv__async_spin
(
uv_async_t
*
handle
)
{
int
i
;
int
rc
;
for
(;;)
{
/* rc=0 -- handle is not pending.
* rc=1 -- handle is pending, other thread is still working with it.
* rc=2 -- handle is pending, other thread is done.
/* 997 is not completely chosen at random. It's a prime number, acyclical
* by nature, and should therefore hopefully dampen sympathetic resonance.
*/
rc
=
cmpxchgi
(
&
handle
->
pending
,
2
,
0
);
if
(
rc
!=
1
)
return
rc
;
/* Other thread is busy with this handle, spin until it's done. */
cpu_relax
();
for
(
i
=
0
;
i
<
997
;
i
++
)
{
/* rc=0 -- handle is not pending.
* rc=1 -- handle is pending, other thread is still working with it.
* rc=2 -- handle is pending, other thread is done.
*/
rc
=
cmpxchgi
(
&
handle
->
pending
,
2
,
0
);
if
(
rc
!=
1
)
return
rc
;
/* Other thread is busy with this handle, spin until it's done. */
cpu_relax
();
}
/* Yield the CPU. We may have preempted the other thread while it's
* inside the critical section and if it's running on the same CPU
* as us, we'll just burn CPU cycles until the end of our time slice.
*/
sched_yield
();
}
}
...
...
deps/libuv/src/unix/bsd-proctitle.c
View file @
6026ec09
...
...
@@ -37,6 +37,13 @@ static void init_process_title_mutex_once(void) {
}
void
uv__process_title_cleanup
(
void
)
{
/* TODO(bnoordhuis) uv_mutex_destroy(&process_title_mutex)
* and reset process_title_mutex_once?
*/
}
char
**
uv_setup_args
(
int
argc
,
char
**
argv
)
{
process_title
=
argc
>
0
?
uv__strdup
(
argv
[
0
])
:
NULL
;
return
argv
;
...
...
deps/libuv/src/unix/darwin-proctitle.c
View file @
6026ec09
...
...
@@ -30,8 +30,7 @@
#include <TargetConditionals.h>
#if !TARGET_OS_IPHONE
# include <CoreFoundation/CoreFoundation.h>
# include <ApplicationServices/ApplicationServices.h>
#include "darwin-stub.h"
#endif
...
...
deps/libuv/src/unix/darwin-stub.h
0 → 100644
View file @
6026ec09
/* Copyright libuv project 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.
*/
#ifndef UV_DARWIN_STUB_H_
#define UV_DARWIN_STUB_H_
#include <stdint.h>
struct
CFArrayCallBacks
;
struct
CFRunLoopSourceContext
;
struct
FSEventStreamContext
;
typedef
double
CFAbsoluteTime
;
typedef
double
CFTimeInterval
;
typedef
int
FSEventStreamEventFlags
;
typedef
int
OSStatus
;
typedef
long
CFIndex
;
typedef
struct
CFArrayCallBacks
CFArrayCallBacks
;
typedef
struct
CFRunLoopSourceContext
CFRunLoopSourceContext
;
typedef
struct
FSEventStreamContext
FSEventStreamContext
;
typedef
uint32_t
FSEventStreamCreateFlags
;
typedef
uint64_t
FSEventStreamEventId
;
typedef
unsigned
CFStringEncoding
;
typedef
void
*
CFAllocatorRef
;
typedef
void
*
CFArrayRef
;
typedef
void
*
CFBundleRef
;
typedef
void
*
CFDictionaryRef
;
typedef
void
*
CFRunLoopRef
;
typedef
void
*
CFRunLoopSourceRef
;
typedef
void
*
CFStringRef
;
typedef
void
*
CFTypeRef
;
typedef
void
*
FSEventStreamRef
;
typedef
void
(
*
FSEventStreamCallback
)(
const
FSEventStreamRef
,
void
*
,
size_t
,
void
*
,
const
FSEventStreamEventFlags
*
,
const
FSEventStreamEventId
*
);
struct
CFRunLoopSourceContext
{
CFIndex
version
;
void
*
info
;
void
*
pad
[
7
];
void
(
*
perform
)(
void
*
);
};
struct
FSEventStreamContext
{
CFIndex
version
;
void
*
info
;
void
*
pad
[
3
];
};
static
const
CFStringEncoding
kCFStringEncodingUTF8
=
0x8000100
;
static
const
OSStatus
noErr
=
0
;
static
const
FSEventStreamEventId
kFSEventStreamEventIdSinceNow
=
-
1
;
static
const
int
kFSEventStreamCreateFlagNoDefer
=
2
;
static
const
int
kFSEventStreamCreateFlagFileEvents
=
16
;
static
const
int
kFSEventStreamEventFlagEventIdsWrapped
=
8
;
static
const
int
kFSEventStreamEventFlagHistoryDone
=
16
;
static
const
int
kFSEventStreamEventFlagItemChangeOwner
=
0x4000
;
static
const
int
kFSEventStreamEventFlagItemCreated
=
0x100
;
static
const
int
kFSEventStreamEventFlagItemFinderInfoMod
=
0x2000
;
static
const
int
kFSEventStreamEventFlagItemInodeMetaMod
=
0x400
;
static
const
int
kFSEventStreamEventFlagItemIsDir
=
0x20000
;
static
const
int
kFSEventStreamEventFlagItemModified
=
0x1000
;
static
const
int
kFSEventStreamEventFlagItemRemoved
=
0x200
;
static
const
int
kFSEventStreamEventFlagItemRenamed
=
0x800
;
static
const
int
kFSEventStreamEventFlagItemXattrMod
=
0x8000
;
static
const
int
kFSEventStreamEventFlagKernelDropped
=
4
;
static
const
int
kFSEventStreamEventFlagMount
=
64
;
static
const
int
kFSEventStreamEventFlagRootChanged
=
32
;
static
const
int
kFSEventStreamEventFlagUnmount
=
128
;
static
const
int
kFSEventStreamEventFlagUserDropped
=
2
;
#endif
/* UV_DARWIN_STUB_H_ */
deps/libuv/src/unix/fs.c
View file @
6026ec09
...
...
@@ -1110,9 +1110,10 @@ static ssize_t uv__fs_copyfile(uv_fs_t* req) {
int
dst_flags
;
int
result
;
int
err
;
size_t
bytes_to_send
;
int64_t
in_offset
;
ssize_t
bytes_written
;
off_t
bytes_to_send
;
off_t
in_offset
;
off_t
bytes_written
;
size_t
bytes_chunk
;
dstfd
=
-
1
;
err
=
0
;
...
...
@@ -1211,7 +1212,10 @@ static ssize_t uv__fs_copyfile(uv_fs_t* req) {
bytes_to_send
=
src_statsbuf
.
st_size
;
in_offset
=
0
;
while
(
bytes_to_send
!=
0
)
{
uv_fs_sendfile
(
NULL
,
&
fs_req
,
dstfd
,
srcfd
,
in_offset
,
bytes_to_send
,
NULL
);
bytes_chunk
=
SSIZE_MAX
;
if
(
bytes_to_send
<
(
off_t
)
bytes_chunk
)
bytes_chunk
=
bytes_to_send
;
uv_fs_sendfile
(
NULL
,
&
fs_req
,
dstfd
,
srcfd
,
in_offset
,
bytes_chunk
,
NULL
);
bytes_written
=
fs_req
.
result
;
uv_fs_req_cleanup
(
&
fs_req
);
...
...
@@ -2082,3 +2086,7 @@ int uv_fs_statfs(uv_loop_t* loop,
PATH
;
POST
;
}
int
uv_fs_get_system_error
(
const
uv_fs_t
*
req
)
{
return
-
req
->
result
;
}
deps/libuv/src/unix/fsevents.c
View file @
6026ec09
...
...
@@ -41,34 +41,33 @@ void uv__fsevents_loop_delete(uv_loop_t* loop) {
#else
/* TARGET_OS_IPHONE */
#include "darwin-stub.h"
#include <dlfcn.h>
#include <assert.h>
#include <stdlib.h>
#include <pthread.h>
#include <CoreFoundation/CFRunLoop.h>
#include <CoreServices/CoreServices.h>
/* These are macros to avoid "initializer element is not constant" errors
* with old versions of gcc.
*/
#define kFSEventsModified (kFSEventStreamEventFlagItemFinderInfoMod | \
kFSEventStreamEventFlagItemModified | \
kFSEventStreamEventFlagItemInodeMetaMod | \
kFSEventStreamEventFlagItemChangeOwner | \
kFSEventStreamEventFlagItemXattrMod)
#define kFSEventsRenamed (kFSEventStreamEventFlagItemCreated | \
kFSEventStreamEventFlagItemRemoved | \
kFSEventStreamEventFlagItemRenamed)
#define kFSEventsSystem (kFSEventStreamEventFlagUserDropped | \
kFSEventStreamEventFlagKernelDropped | \
kFSEventStreamEventFlagEventIdsWrapped | \
kFSEventStreamEventFlagHistoryDone | \
kFSEventStreamEventFlagMount | \
kFSEventStreamEventFlagUnmount | \
kFSEventStreamEventFlagRootChanged)
static
const
int
kFSEventsModified
=
kFSEventStreamEventFlagItemChangeOwner
|
kFSEventStreamEventFlagItemFinderInfoMod
|
kFSEventStreamEventFlagItemInodeMetaMod
|
kFSEventStreamEventFlagItemModified
|
kFSEventStreamEventFlagItemXattrMod
;
static
const
int
kFSEventsRenamed
=
kFSEventStreamEventFlagItemCreated
|
kFSEventStreamEventFlagItemRemoved
|
kFSEventStreamEventFlagItemRenamed
;
static
const
int
kFSEventsSystem
=
kFSEventStreamEventFlagUserDropped
|
kFSEventStreamEventFlagKernelDropped
|
kFSEventStreamEventFlagEventIdsWrapped
|
kFSEventStreamEventFlagHistoryDone
|
kFSEventStreamEventFlagMount
|
kFSEventStreamEventFlagUnmount
|
kFSEventStreamEventFlagRootChanged
;
typedef
struct
uv__fsevents_event_s
uv__fsevents_event_t
;
typedef
struct
uv__cf_loop_signal_s
uv__cf_loop_signal_t
;
...
...
@@ -148,7 +147,7 @@ static void (*pFSEventStreamRelease)(FSEventStreamRef);
static
void
(
*
pFSEventStreamScheduleWithRunLoop
)(
FSEventStreamRef
,
CFRunLoopRef
,
CFStringRef
);
static
Boolean
(
*
pFSEventStreamStart
)(
FSEventStreamRef
);
static
int
(
*
pFSEventStreamStart
)(
FSEventStreamRef
);
static
void
(
*
pFSEventStreamStop
)(
FSEventStreamRef
);
#define UV__FSEVENTS_PROCESS(handle, block) \
...
...
@@ -215,7 +214,7 @@ static void uv__fsevents_push_event(uv_fs_event_t* handle,
/* Runs in CF thread, when there're events in FSEventStream */
static
void
uv__fsevents_event_cb
(
Const
FSEventStreamRef
streamRef
,
static
void
uv__fsevents_event_cb
(
const
FSEventStreamRef
streamRef
,
void
*
info
,
size_t
numEvents
,
void
*
eventPaths
,
...
...
@@ -340,11 +339,8 @@ static int uv__fsevents_create_stream(uv_loop_t* loop, CFArrayRef paths) {
FSEventStreamCreateFlags
flags
;
/* Initialize context */
ctx
.
version
=
0
;
memset
(
&
ctx
,
0
,
sizeof
(
ctx
))
;
ctx
.
info
=
loop
;
ctx
.
retain
=
NULL
;
ctx
.
release
=
NULL
;
ctx
.
copyDescription
=
NULL
;
latency
=
0
.
05
;
...
...
deps/libuv/src/unix/internal.h
View file @
6026ec09
...
...
@@ -106,10 +106,8 @@ int uv__pthread_sigmask(int how, const sigset_t* set, sigset_t* oset);
#if defined(__clang__) || \
defined(__GNUC__) || \
defined(__INTEL_COMPILER)
# define UV_DESTRUCTOR(declaration) __attribute__((destructor)) declaration
# define UV_UNUSED(declaration) __attribute__((unused)) declaration
#else
# define UV_DESTRUCTOR(declaration) declaration
# define UV_UNUSED(declaration) declaration
#endif
...
...
deps/libuv/src/unix/linux-core.c
View file @
6026ec09
...
...
@@ -768,7 +768,8 @@ static int read_times(FILE* statfile_fp,
unsigned
int
numcpus
,
uv_cpu_info_t
*
ci
)
{
struct
uv_cpu_times_s
ts
;
uint64_t
clock_ticks
;
unsigned
int
ticks
;
unsigned
int
multiplier
;
uint64_t
user
;
uint64_t
nice
;
uint64_t
sys
;
...
...
@@ -779,9 +780,10 @@ static int read_times(FILE* statfile_fp,
uint64_t
len
;
char
buf
[
1024
];
clock_ticks
=
sysconf
(
_SC_CLK_TCK
);
assert
(
clock_ticks
!=
(
uint64_t
)
-
1
);
assert
(
clock_ticks
!=
0
);
ticks
=
(
unsigned
int
)
sysconf
(
_SC_CLK_TCK
);
multiplier
=
((
uint64_t
)
1000L
/
ticks
);
assert
(
ticks
!=
(
unsigned
int
)
-
1
);
assert
(
ticks
!=
0
);
rewind
(
statfile_fp
);
...
...
@@ -823,11 +825,11 @@ static int read_times(FILE* statfile_fp,
&
irq
))
abort
();
ts
.
user
=
clock_ticks
*
us
er
;
ts
.
nice
=
clock_ticks
*
nice
;
ts
.
sys
=
clock_ticks
*
sys
;
ts
.
idle
=
clock_ticks
*
idle
;
ts
.
irq
=
clock_ticks
*
irq
;
ts
.
user
=
user
*
multipli
er
;
ts
.
nice
=
nice
*
multiplier
;
ts
.
sys
=
sys
*
multiplier
;
ts
.
idle
=
idle
*
multiplier
;
ts
.
irq
=
irq
*
multiplier
;
ci
[
num
++
].
cpu_times
=
ts
;
}
assert
(
num
==
numcpus
);
...
...
deps/libuv/src/unix/loop.c
View file @
6026ec09
...
...
@@ -106,6 +106,8 @@ fail_rwlock_init:
fail_signal_init:
uv__platform_loop_delete
(
loop
);
uv__free
(
loop
->
watchers
);
loop
->
nwatchers
=
0
;
return
err
;
}
...
...
deps/libuv/src/unix/no-proctitle.c
View file @
6026ec09
...
...
@@ -29,6 +29,9 @@ char** uv_setup_args(int argc, char** argv) {
return
argv
;
}
void
uv__process_title_cleanup
(
void
)
{
}
int
uv_set_process_title
(
const
char
*
title
)
{
return
0
;
}
...
...
deps/libuv/src/unix/proctitle.c
View file @
6026ec09
...
...
@@ -145,7 +145,7 @@ int uv_get_process_title(char* buffer, size_t size) {
}
UV_DESTRUCTOR
(
static
void
free_args_mem
(
void
)
)
{
void
uv__process_title_cleanup
(
void
)
{
uv__free
(
args_mem
);
/* Keep valgrind happy. */
args_mem
=
NULL
;
}
deps/libuv/src/unix/signal.c
View file @
6026ec09
...
...
@@ -77,7 +77,7 @@ static void uv__signal_global_init(void) {
}
UV_DESTRUCTOR
(
static
void
uv__signal_global_fini
(
void
)
)
{
void
uv__signal_cleanup
(
void
)
{
/* We can only use signal-safe functions here.
* That includes read/write and close, fortunately.
* We do all of this directly here instead of resetting
...
...
@@ -98,7 +98,7 @@ UV_DESTRUCTOR(static void uv__signal_global_fini(void)) {
static
void
uv__signal_global_reinit
(
void
)
{
uv__signal_
global_fini
();
uv__signal_
cleanup
();
if
(
uv__make_pipe
(
uv__signal_lock_pipefd
,
0
))
abort
();
...
...
deps/libuv/src/unix/thread.c
View file @
6026ec09
...
...
@@ -172,10 +172,11 @@ static size_t thread_stack_size(void) {
#if defined(__APPLE__) || defined(__linux__)
struct
rlimit
lim
;
if
(
getrlimit
(
RLIMIT_STACK
,
&
lim
))
abort
();
if
(
lim
.
rlim_cur
!=
RLIM_INFINITY
)
{
/* getrlimit() can fail on some aarch64 systems due to a glibc bug where
* the system call wrapper invokes the wrong system call. Don't treat
* that as fatal, just use the default stack size instead.
*/
if
(
0
==
getrlimit
(
RLIMIT_STACK
,
&
lim
)
&&
lim
.
rlim_cur
!=
RLIM_INFINITY
)
{
/* pthread_attr_setstacksize() expects page-aligned values. */
lim
.
rlim_cur
-=
lim
.
rlim_cur
%
(
rlim_t
)
getpagesize
();
...
...
deps/libuv/src/unix/udp.c
View file @
6026ec09
...
...
@@ -42,6 +42,11 @@
# define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
#endif
union
uv__sockaddr
{
struct
sockaddr_in6
in6
;
struct
sockaddr_in
in
;
struct
sockaddr
addr
;
};
static
void
uv__udp_run_completed
(
uv_udp_t
*
handle
);
static
void
uv__udp_io
(
uv_loop_t
*
loop
,
uv__io_t
*
w
,
unsigned
int
revents
);
...
...
@@ -202,6 +207,9 @@ static int uv__udp_recvmmsg(uv_udp_t* handle, uv_buf_t* buf) {
msgs
[
k
].
msg_hdr
.
msg_iovlen
=
1
;
msgs
[
k
].
msg_hdr
.
msg_name
=
peers
+
k
;
msgs
[
k
].
msg_hdr
.
msg_namelen
=
sizeof
(
peers
[
0
]);
msgs
[
k
].
msg_hdr
.
msg_control
=
NULL
;
msgs
[
k
].
msg_hdr
.
msg_controllen
=
0
;
msgs
[
k
].
msg_hdr
.
msg_flags
=
0
;
}
do
...
...
@@ -262,11 +270,9 @@ static void uv__udp_recvmsg(uv_udp_t* handle) {
assert
(
buf
.
base
!=
NULL
);
#if HAVE_MMSG
uv_once
(
&
once
,
uv__udp_mmsg_init
);
if
(
uv__recvmmsg_avail
)
{
/* Returned space for more than 1 datagram, use it to receive
* multiple datagrams. */
if
(
buf
.
len
>=
2
*
UV__UDP_DGRAM_MAXSIZE
)
{
if
(
handle
->
flags
&
UV_HANDLE_UDP_RECVMMSG
)
{
uv_once
(
&
once
,
uv__udp_mmsg_init
);
if
(
uv__recvmmsg_avail
)
{
nread
=
uv__udp_recvmmsg
(
handle
,
&
buf
);
if
(
nread
>
0
)
count
-=
nread
;
...
...
@@ -566,11 +572,7 @@ int uv__udp_bind(uv_udp_t* handle,
static
int
uv__udp_maybe_deferred_bind
(
uv_udp_t
*
handle
,
int
domain
,
unsigned
int
flags
)
{
union
{
struct
sockaddr_in6
in6
;
struct
sockaddr_in
in
;
struct
sockaddr
addr
;
}
taddr
;
union
uv__sockaddr
taddr
;
socklen_t
addrlen
;
if
(
handle
->
io_watcher
.
fd
!=
-
1
)
...
...
@@ -923,8 +925,10 @@ static int uv__udp_set_source_membership6(uv_udp_t* handle,
mreq
.
gsr_interface
=
0
;
}
memcpy
(
&
mreq
.
gsr_group
,
multicast_addr
,
sizeof
(
mreq
.
gsr_group
));
memcpy
(
&
mreq
.
gsr_source
,
source_addr
,
sizeof
(
mreq
.
gsr_source
));
STATIC_ASSERT
(
sizeof
(
mreq
.
gsr_group
)
>=
sizeof
(
*
multicast_addr
));
STATIC_ASSERT
(
sizeof
(
mreq
.
gsr_source
)
>=
sizeof
(
*
source_addr
));
memcpy
(
&
mreq
.
gsr_group
,
multicast_addr
,
sizeof
(
*
multicast_addr
));
memcpy
(
&
mreq
.
gsr_source
,
source_addr
,
sizeof
(
*
source_addr
));
if
(
membership
==
UV_JOIN_GROUP
)
optname
=
MCAST_JOIN_SOURCE_GROUP
;
...
...
@@ -946,26 +950,17 @@ static int uv__udp_set_source_membership6(uv_udp_t* handle,
#endif
int
uv_udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
int
flags
)
{
int
domain
;
int
err
;
int
uv__udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
flags
,
int
domain
)
{
int
fd
;
/* Use the lower 8 bits for the domain */
domain
=
flags
&
0xFF
;
if
(
domain
!=
AF_INET
&&
domain
!=
AF_INET6
&&
domain
!=
AF_UNSPEC
)
return
UV_EINVAL
;
if
(
flags
&
~
0xFF
)
return
UV_EINVAL
;
fd
=
-
1
;
if
(
domain
!=
AF_UNSPEC
)
{
err
=
uv__socket
(
domain
,
SOCK_DGRAM
,
0
);
if
(
err
<
0
)
return
err
;
fd
=
err
;
}
else
{
fd
=
-
1
;
fd
=
uv__socket
(
domain
,
SOCK_DGRAM
,
0
);
if
(
fd
<
0
)
return
fd
;
}
uv__handle_init
(
loop
,
(
uv_handle_t
*
)
handle
,
UV_UDP
);
...
...
@@ -981,11 +976,6 @@ int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags) {
}
int
uv_udp_init
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
)
{
return
uv_udp_init_ex
(
loop
,
handle
,
AF_UNSPEC
);
}
int
uv_udp_open
(
uv_udp_t
*
handle
,
uv_os_sock_t
sock
)
{
int
err
;
...
...
@@ -1043,40 +1033,31 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
uv_membership
membership
)
{
#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__ANDROID__)
int
err
;
struct
sockaddr_storage
mcast_addr
;
struct
sockaddr_in
*
mcast_addr4
;
struct
sockaddr_in6
*
mcast_addr6
;
struct
sockaddr_storage
src_addr
;
struct
sockaddr_in
*
src_addr4
;
struct
sockaddr_in6
*
src_addr6
;
mcast_addr4
=
(
struct
sockaddr_in
*
)
&
mcast_addr
;
mcast_addr6
=
(
struct
sockaddr_in6
*
)
&
mcast_addr
;
src_addr4
=
(
struct
sockaddr_in
*
)
&
src_addr
;
src_addr6
=
(
struct
sockaddr_in6
*
)
&
src_addr
;
err
=
uv_ip4_addr
(
multicast_addr
,
0
,
mcast_addr4
);
union
uv__sockaddr
mcast_addr
;
union
uv__sockaddr
src_addr
;
err
=
uv_ip4_addr
(
multicast_addr
,
0
,
&
mcast_addr
.
in
);
if
(
err
)
{
err
=
uv_ip6_addr
(
multicast_addr
,
0
,
mcast_addr
6
);
err
=
uv_ip6_addr
(
multicast_addr
,
0
,
&
mcast_addr
.
in
6
);
if
(
err
)
return
err
;
err
=
uv_ip6_addr
(
source_addr
,
0
,
src_addr
6
);
err
=
uv_ip6_addr
(
source_addr
,
0
,
&
src_addr
.
in
6
);
if
(
err
)
return
err
;
return
uv__udp_set_source_membership6
(
handle
,
mcast_addr
6
,
&
mcast_addr
.
in
6
,
interface_addr
,
src_addr
6
,
&
src_addr
.
in
6
,
membership
);
}
err
=
uv_ip4_addr
(
source_addr
,
0
,
src_addr4
);
err
=
uv_ip4_addr
(
source_addr
,
0
,
&
src_addr
.
in
);
if
(
err
)
return
err
;
return
uv__udp_set_source_membership4
(
handle
,
mcast_addr4
,
&
mcast_addr
.
in
,
interface_addr
,
src_addr4
,
&
src_addr
.
in
,
membership
);
#else
return
UV_ENOSYS
;
...
...
deps/libuv/src/uv-common.c
View file @
6026ec09
...
...
@@ -293,6 +293,36 @@ int uv_tcp_bind(uv_tcp_t* handle,
}
int
uv_udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
flags
)
{
unsigned
extra_flags
;
int
domain
;
int
rc
;
/* Use the lower 8 bits for the domain. */
domain
=
flags
&
0xFF
;
if
(
domain
!=
AF_INET
&&
domain
!=
AF_INET6
&&
domain
!=
AF_UNSPEC
)
return
UV_EINVAL
;
/* Use the higher bits for extra flags. */
extra_flags
=
flags
&
~
0xFF
;
if
(
extra_flags
&
~
UV_UDP_RECVMMSG
)
return
UV_EINVAL
;
rc
=
uv__udp_init_ex
(
loop
,
handle
,
flags
,
domain
);
if
(
rc
==
0
)
if
(
extra_flags
&
UV_UDP_RECVMMSG
)
handle
->
flags
|=
UV_HANDLE_UDP_RECVMMSG
;
return
rc
;
}
int
uv_udp_init
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
)
{
return
uv_udp_init_ex
(
loop
,
handle
,
AF_UNSPEC
);
}
int
uv_udp_bind
(
uv_udp_t
*
handle
,
const
struct
sockaddr
*
addr
,
unsigned
int
flags
)
{
...
...
@@ -821,3 +851,19 @@ void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count) {
uv__free
(
cpu_infos
);
}
#ifdef __GNUC__
/* Also covers __clang__ and __INTEL_COMPILER. */
__attribute__
((
destructor
))
#endif
void
uv_library_shutdown
(
void
)
{
static
int
was_shutdown
;
if
(
was_shutdown
)
return
;
uv__process_title_cleanup
();
uv__signal_cleanup
();
uv__threadpool_cleanup
();
was_shutdown
=
1
;
}
deps/libuv/src/uv-common.h
View file @
6026ec09
...
...
@@ -104,6 +104,7 @@ enum {
/* Only used by uv_udp_t handles. */
UV_HANDLE_UDP_PROCESSING
=
0x01000000
,
UV_HANDLE_UDP_CONNECTED
=
0x02000000
,
UV_HANDLE_UDP_RECVMMSG
=
0x04000000
,
/* Only used by uv_pipe_t handles. */
UV_HANDLE_NON_OVERLAPPED_PIPE
=
0x01000000
,
...
...
@@ -138,6 +139,11 @@ int uv__tcp_connect(uv_connect_t* req,
unsigned
int
addrlen
,
uv_connect_cb
cb
);
int
uv__udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
flags
,
int
domain
);
int
uv__udp_bind
(
uv_udp_t
*
handle
,
const
struct
sockaddr
*
addr
,
unsigned
int
addrlen
,
...
...
@@ -200,6 +206,10 @@ 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
);
void
uv__process_title_cleanup
(
void
);
void
uv__signal_cleanup
(
void
);
void
uv__threadpool_cleanup
(
void
);
#define uv__has_active_reqs(loop) \
((loop)->active_reqs.count > 0)
...
...
deps/libuv/src/win/core.c
View file @
6026ec09
...
...
@@ -449,12 +449,12 @@ static void uv__poll(uv_loop_t* loop, DWORD timeout) {
timeout_time
=
loop
->
time
+
timeout
;
for
(
repeat
=
0
;
;
repeat
++
)
{
success
=
GetQueuedCompletionStatusEx
(
loop
->
iocp
,
overlappeds
,
ARRAY_SIZE
(
overlappeds
),
&
count
,
timeout
,
FALSE
);
success
=
p
GetQueuedCompletionStatusEx
(
loop
->
iocp
,
overlappeds
,
ARRAY_SIZE
(
overlappeds
),
&
count
,
timeout
,
FALSE
);
if
(
success
)
{
for
(
i
=
0
;
i
<
count
;
i
++
)
{
...
...
deps/libuv/src/win/error.c
View file @
6026ec09
...
...
@@ -72,6 +72,7 @@ int uv_translate_sys_error(int sys_errno) {
case
ERROR_NOACCESS
:
return
UV_EACCES
;
case
WSAEACCES
:
return
UV_EACCES
;
case
ERROR_ELEVATION_REQUIRED
:
return
UV_EACCES
;
case
ERROR_CANT_ACCESS_FILE
:
return
UV_EACCES
;
case
ERROR_ADDRESS_ALREADY_ASSOCIATED
:
return
UV_EADDRINUSE
;
case
WSAEADDRINUSE
:
return
UV_EADDRINUSE
;
case
WSAEADDRNOTAVAIL
:
return
UV_EADDRNOTAVAIL
;
...
...
deps/libuv/src/win/fs-event.c
View file @
6026ec09
...
...
@@ -83,6 +83,7 @@ static void uv_relative_path(const WCHAR* filename,
static
int
uv_split_path
(
const
WCHAR
*
filename
,
WCHAR
**
dir
,
WCHAR
**
file
)
{
size_t
len
,
i
;
DWORD
dir_len
;
if
(
filename
==
NULL
)
{
if
(
dir
!=
NULL
)
...
...
@@ -97,12 +98,16 @@ static int uv_split_path(const WCHAR* filename, WCHAR** dir,
if
(
i
==
0
)
{
if
(
dir
)
{
*
dir
=
(
WCHAR
*
)
uv__malloc
((
MAX_PATH
+
1
)
*
sizeof
(
WCHAR
));
dir_len
=
GetCurrentDirectoryW
(
0
,
NULL
);
if
(
dir_len
==
0
)
{
return
-
1
;
}
*
dir
=
(
WCHAR
*
)
uv__malloc
(
dir_len
*
sizeof
(
WCHAR
));
if
(
!*
dir
)
{
uv_fatal_error
(
ERROR_OUTOFMEMORY
,
"uv__malloc"
);
}
if
(
!
GetCurrentDirectoryW
(
MAX_PATH
,
*
dir
))
{
if
(
!
GetCurrentDirectoryW
(
dir_len
,
*
dir
))
{
uv__free
(
*
dir
);
*
dir
=
NULL
;
return
-
1
;
...
...
@@ -155,9 +160,11 @@ int uv_fs_event_start(uv_fs_event_t* handle,
int
name_size
,
is_path_dir
,
size
;
DWORD
attr
,
last_error
;
WCHAR
*
dir
=
NULL
,
*
dir_to_watch
,
*
pathw
=
NULL
;
WCHAR
short_path_buffer
[
MAX_PATH
];
DWORD
short_path_buffer_len
;
WCHAR
*
short_path_buffer
;
WCHAR
*
short_path
,
*
long_path
;
short_path
=
NULL
;
if
(
uv__is_active
(
handle
))
return
UV_EINVAL
;
...
...
@@ -230,13 +237,23 @@ int uv_fs_event_start(uv_fs_event_t* handle,
*/
/* Convert to short path. */
short_path_buffer
=
NULL
;
short_path_buffer_len
=
GetShortPathNameW
(
pathw
,
NULL
,
0
);
if
(
short_path_buffer_len
==
0
)
{
goto
short_path_done
;
}
short_path_buffer
=
uv__malloc
(
short_path_buffer_len
*
sizeof
(
WCHAR
));
if
(
short_path_buffer
==
NULL
)
{
goto
short_path_done
;
}
if
(
GetShortPathNameW
(
pathw
,
short_path_buffer
,
ARRAY_SIZE
(
short_path_buffer
)))
{
short_path
=
short_path_buffer
;
}
else
{
short_path
=
NULL
;
short_path_buffer_len
)
==
0
)
{
uv__free
(
short_path_buffer
);
short_path_buffer
=
NULL
;
}
short_path_done:
short_path
=
short_path_buffer
;
if
(
uv_split_path
(
pathw
,
&
dir
,
&
handle
->
filew
)
!=
0
)
{
last_error
=
GetLastError
();
...
...
@@ -346,6 +363,8 @@ error:
if
(
uv__is_active
(
handle
))
uv__handle_stop
(
handle
);
uv__free
(
short_path
);
return
uv_translate_sys_error
(
last_error
);
}
...
...
deps/libuv/src/win/fs.c
View file @
6026ec09
This diff is collapsed.
Click to expand it.
deps/libuv/src/win/poll.c
View file @
6026ec09
...
...
@@ -134,32 +134,6 @@ static void uv__fast_poll_submit_poll_req(uv_loop_t* loop, uv_poll_t* handle) {
}
static
int
uv__fast_poll_cancel_poll_req
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
)
{
AFD_POLL_INFO
afd_poll_info
;
int
result
;
afd_poll_info
.
Exclusive
=
TRUE
;
afd_poll_info
.
NumberOfHandles
=
1
;
afd_poll_info
.
Timeout
.
QuadPart
=
INT64_MAX
;
afd_poll_info
.
Handles
[
0
].
Handle
=
(
HANDLE
)
handle
->
socket
;
afd_poll_info
.
Handles
[
0
].
Status
=
0
;
afd_poll_info
.
Handles
[
0
].
Events
=
AFD_POLL_ALL
;
result
=
uv_msafd_poll
(
handle
->
socket
,
&
afd_poll_info
,
uv__get_afd_poll_info_dummy
(),
uv__get_overlapped_dummy
());
if
(
result
==
SOCKET_ERROR
)
{
DWORD
error
=
WSAGetLastError
();
if
(
error
!=
WSA_IO_PENDING
)
return
error
;
}
return
0
;
}
static
void
uv__fast_poll_process_poll_req
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
,
uv_req_t
*
req
)
{
unsigned
char
mask_events
;
...
...
@@ -226,44 +200,6 @@ 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
((
events
&
~
(
UV_READABLE
|
UV_WRITABLE
|
UV_DISCONNECT
))
==
0
);
handle
->
events
=
events
;
if
(
handle
->
events
!=
0
)
{
uv__handle_start
(
handle
);
}
else
{
uv__handle_stop
(
handle
);
}
if
((
handle
->
events
&
~
(
handle
->
submitted_events_1
|
handle
->
submitted_events_2
))
!=
0
)
{
uv__fast_poll_submit_poll_req
(
handle
->
loop
,
handle
);
}
return
0
;
}
static
int
uv__fast_poll_close
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
)
{
handle
->
events
=
0
;
uv__handle_closing
(
handle
);
if
(
handle
->
submitted_events_1
==
0
&&
handle
->
submitted_events_2
==
0
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
return
0
;
}
else
{
/* Cancel outstanding poll requests by executing another, unique poll
* request that forces the outstanding ones to return. */
return
uv__fast_poll_cancel_poll_req
(
loop
,
handle
);
}
}
static
SOCKET
uv__fast_poll_create_peer_socket
(
HANDLE
iocp
,
WSAPROTOCOL_INFOW
*
protocol_info
)
{
SOCKET
sock
=
0
;
...
...
@@ -469,41 +405,6 @@ 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
((
events
&
~
(
UV_READABLE
|
UV_WRITABLE
))
==
0
);
handle
->
events
=
events
;
if
(
handle
->
events
!=
0
)
{
uv__handle_start
(
handle
);
}
else
{
uv__handle_stop
(
handle
);
}
if
((
handle
->
events
&
~
(
handle
->
submitted_events_1
|
handle
->
submitted_events_2
))
!=
0
)
{
uv__slow_poll_submit_poll_req
(
handle
->
loop
,
handle
);
}
return
0
;
}
static
int
uv__slow_poll_close
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
)
{
handle
->
events
=
0
;
uv__handle_closing
(
handle
);
if
(
handle
->
submitted_events_1
==
0
&&
handle
->
submitted_events_2
==
0
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
}
return
0
;
}
int
uv_poll_init
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
,
int
fd
)
{
return
uv_poll_init_socket
(
loop
,
handle
,
(
SOCKET
)
uv__get_osfhandle
(
fd
));
}
...
...
@@ -582,35 +483,43 @@ int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle,
}
int
uv_poll_star
t
(
uv_poll_t
*
handle
,
int
events
,
uv_poll_cb
cb
)
{
int
err
;
static
int
uv__poll_se
t
(
uv_poll_t
*
handle
,
int
events
,
uv_poll_cb
cb
)
{
int
submitted_events
;
if
(
!
(
handle
->
flags
&
UV_HANDLE_POLL_SLOW
))
{
err
=
uv__fast_poll_set
(
handle
->
loop
,
handle
,
events
);
}
else
{
err
=
uv__slow_poll_set
(
handle
->
loop
,
handle
,
events
);
}
assert
(
handle
->
type
==
UV_POLL
);
assert
(
!
(
handle
->
flags
&
UV_HANDLE_CLOSING
));
assert
((
events
&
~
(
UV_READABLE
|
UV_WRITABLE
|
UV_DISCONNECT
))
==
0
);
handle
->
events
=
events
;
handle
->
poll_cb
=
cb
;
if
(
err
)
{
return
uv_translate_sys_error
(
err
);
if
(
handle
->
events
==
0
)
{
uv__handle_stop
(
handle
);
return
0
;
}
handle
->
poll_cb
=
cb
;
uv__handle_start
(
handle
);
submitted_events
=
handle
->
submitted_events_1
|
handle
->
submitted_events_2
;
if
(
handle
->
events
&
~
submitted_events
)
{
if
(
handle
->
flags
&
UV_HANDLE_POLL_SLOW
)
{
uv__slow_poll_submit_poll_req
(
handle
->
loop
,
handle
);
}
else
{
uv__fast_poll_submit_poll_req
(
handle
->
loop
,
handle
);
}
}
return
0
;
}
int
uv_poll_stop
(
uv_poll_t
*
handle
)
{
int
err
;
int
uv_poll_start
(
uv_poll_t
*
handle
,
int
events
,
uv_poll_cb
cb
)
{
return
uv__poll_set
(
handle
,
events
,
cb
);
}
if
(
!
(
handle
->
flags
&
UV_HANDLE_POLL_SLOW
))
{
err
=
uv__fast_poll_set
(
handle
->
loop
,
handle
,
0
);
}
else
{
err
=
uv__slow_poll_set
(
handle
->
loop
,
handle
,
0
);
}
return
uv_translate_sys_error
(
err
);
int
uv_poll_stop
(
uv_poll_t
*
handle
)
{
return
uv__poll_set
(
handle
,
0
,
handle
->
poll_cb
);
}
...
...
@@ -624,11 +533,43 @@ void uv_process_poll_req(uv_loop_t* loop, uv_poll_t* handle, uv_req_t* req) {
int
uv_poll_close
(
uv_loop_t
*
loop
,
uv_poll_t
*
handle
)
{
if
(
!
(
handle
->
flags
&
UV_HANDLE_POLL_SLOW
))
{
return
uv__fast_poll_close
(
loop
,
handle
);
}
else
{
return
uv__slow_poll_close
(
loop
,
handle
);
AFD_POLL_INFO
afd_poll_info
;
DWORD
error
;
int
result
;
handle
->
events
=
0
;
uv__handle_closing
(
handle
);
if
(
handle
->
submitted_events_1
==
0
&&
handle
->
submitted_events_2
==
0
)
{
uv_want_endgame
(
loop
,
(
uv_handle_t
*
)
handle
);
return
0
;
}
if
(
handle
->
flags
&
UV_HANDLE_POLL_SLOW
)
return
0
;
/* Cancel outstanding poll requests by executing another, unique poll
* request that forces the outstanding ones to return. */
afd_poll_info
.
Exclusive
=
TRUE
;
afd_poll_info
.
NumberOfHandles
=
1
;
afd_poll_info
.
Timeout
.
QuadPart
=
INT64_MAX
;
afd_poll_info
.
Handles
[
0
].
Handle
=
(
HANDLE
)
handle
->
socket
;
afd_poll_info
.
Handles
[
0
].
Status
=
0
;
afd_poll_info
.
Handles
[
0
].
Events
=
AFD_POLL_ALL
;
result
=
uv_msafd_poll
(
handle
->
socket
,
&
afd_poll_info
,
uv__get_afd_poll_info_dummy
(),
uv__get_overlapped_dummy
());
if
(
result
==
SOCKET_ERROR
)
{
error
=
WSAGetLastError
();
if
(
error
!=
WSA_IO_PENDING
)
return
uv_translate_sys_error
(
error
);
}
return
0
;
}
...
...
deps/libuv/src/win/signal.c
View file @
6026ec09
...
...
@@ -46,6 +46,11 @@ void uv_signals_init(void) {
}
void
uv__signal_cleanup
(
void
)
{
/* TODO(bnoordhuis) Undo effects of uv_signal_init()? */
}
static
int
uv__signal_compare
(
uv_signal_t
*
w1
,
uv_signal_t
*
w2
)
{
/* Compare signums first so all watchers with the same signnum end up
* adjacent. */
...
...
deps/libuv/src/win/udp.c
View file @
6026ec09
...
...
@@ -125,17 +125,10 @@ static int uv_udp_set_socket(uv_loop_t* loop, uv_udp_t* handle, SOCKET socket,
}
int
uv_udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
int
flags
)
{
int
domain
;
/* Use the lower 8 bits for the domain */
domain
=
flags
&
0xFF
;
if
(
domain
!=
AF_INET
&&
domain
!=
AF_INET6
&&
domain
!=
AF_UNSPEC
)
return
UV_EINVAL
;
if
(
flags
&
~
0xFF
)
return
UV_EINVAL
;
int
uv__udp_init_ex
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
,
unsigned
flags
,
int
domain
)
{
uv__handle_init
(
loop
,
(
uv_handle_t
*
)
handle
,
UV_UDP
);
handle
->
socket
=
INVALID_SOCKET
;
handle
->
reqs_pending
=
0
;
...
...
@@ -174,11 +167,6 @@ int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags) {
}
int
uv_udp_init
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
)
{
return
uv_udp_init_ex
(
loop
,
handle
,
AF_UNSPEC
);
}
void
uv_udp_close
(
uv_loop_t
*
loop
,
uv_udp_t
*
handle
)
{
uv_udp_recv_stop
(
handle
);
closesocket
(
handle
->
socket
);
...
...
@@ -786,8 +774,10 @@ int uv__udp_set_source_membership6(uv_udp_t* handle,
mreq
.
gsr_interface
=
0
;
}
memcpy
(
&
mreq
.
gsr_group
,
multicast_addr
,
sizeof
(
mreq
.
gsr_group
));
memcpy
(
&
mreq
.
gsr_source
,
source_addr
,
sizeof
(
mreq
.
gsr_source
));
STATIC_ASSERT
(
sizeof
(
mreq
.
gsr_group
)
>=
sizeof
(
*
multicast_addr
));
STATIC_ASSERT
(
sizeof
(
mreq
.
gsr_source
)
>=
sizeof
(
*
source_addr
));
memcpy
(
&
mreq
.
gsr_group
,
multicast_addr
,
sizeof
(
*
multicast_addr
));
memcpy
(
&
mreq
.
gsr_source
,
source_addr
,
sizeof
(
*
source_addr
));
if
(
membership
==
UV_JOIN_GROUP
)
optname
=
MCAST_JOIN_SOURCE_GROUP
;
...
...
deps/libuv/src/win/util.c
View file @
6026ec09
This diff is collapsed.
Click to expand it.
deps/libuv/src/win/winapi.h
View file @
6026ec09
...
...
@@ -4152,6 +4152,10 @@ typedef const UNICODE_STRING *PCUNICODE_STRING;
struct
{
UCHAR
DataBuffer
[
1
];
}
GenericReparseBuffer
;
struct
{
ULONG
StringCount
;
WCHAR
StringList
[
1
];
}
AppExecLinkReparseBuffer
;
};
}
REPARSE_DATA_BUFFER
,
*
PREPARSE_DATA_BUFFER
;
#endif
...
...
@@ -4517,6 +4521,9 @@ typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
#ifndef IO_REPARSE_TAG_SYMLINK
# define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
#endif
#ifndef IO_REPARSE_TAG_APPEXECLINK
# define IO_REPARSE_TAG_APPEXECLINK (0x8000001BL)
#endif
typedef
VOID
(
NTAPI
*
PIO_APC_ROUTINE
)
(
PVOID
ApcContext
,
...
...
docs/changes/1621.feature
0 → 100644
View file @
6026ec09
Update
bundled
libuv
from
1.36.0
to
1.38.0.
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