diff options
Diffstat (limited to 'deps/uv/src/win')
-rw-r--r-- | deps/uv/src/win/fs.c | 9 | ||||
-rw-r--r-- | deps/uv/src/win/pipe.c | 4 | ||||
-rw-r--r-- | deps/uv/src/win/thread.c | 1 | ||||
-rw-r--r-- | deps/uv/src/win/util.c | 5 |
4 files changed, 16 insertions, 3 deletions
diff --git a/deps/uv/src/win/fs.c b/deps/uv/src/win/fs.c index b90eaa7548..11c7c13edd 100644 --- a/deps/uv/src/win/fs.c +++ b/deps/uv/src/win/fs.c @@ -439,8 +439,15 @@ void fs__open(uv_fs_t* req) { * does. We indiscriminately use all the sharing modes, to match * UNIX semantics. In particular, this ensures that the file can * be deleted even whilst it's open, fixing issue #1449. + * We still support exclusive sharing mode, since it is necessary + * for opening raw block devices, otherwise Windows will prevent + * any attempt to write past the master boot record. */ - share = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; + if (flags & UV_FS_O_EXLOCK) { + share = 0; + } else { + share = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; + } switch (flags & (UV_FS_O_CREAT | UV_FS_O_EXCL | UV_FS_O_TRUNC)) { case 0: diff --git a/deps/uv/src/win/pipe.c b/deps/uv/src/win/pipe.c index 642213bc88..1a7c4dc15e 100644 --- a/deps/uv/src/win/pipe.c +++ b/deps/uv/src/win/pipe.c @@ -31,8 +31,8 @@ #include "stream-inl.h" #include "req-inl.h" -#include <AclAPI.h> -#include <AccCtrl.h> +#include <aclapi.h> +#include <accctrl.h> typedef struct uv__ipc_queue_item_s uv__ipc_queue_item_t; diff --git a/deps/uv/src/win/thread.c b/deps/uv/src/win/thread.c index 30b2d7793c..9eaad77cd0 100644 --- a/deps/uv/src/win/thread.c +++ b/deps/uv/src/win/thread.c @@ -182,6 +182,7 @@ int uv_thread_join(uv_thread_t *tid) { else { CloseHandle(*tid); *tid = 0; + MemoryBarrier(); /* For feature parity with pthread_join(). */ return 0; } } diff --git a/deps/uv/src/win/util.c b/deps/uv/src/win/util.c index 2aec9f8dfe..3100bc23ad 100644 --- a/deps/uv/src/win/util.c +++ b/deps/uv/src/win/util.c @@ -331,6 +331,11 @@ uint64_t uv_get_total_memory(void) { } +uv_pid_t uv_os_getpid(void) { + return GetCurrentProcessId(); +} + + uv_pid_t uv_os_getppid(void) { int parent_pid = -1; HANDLE handle; |