Ben Noordhuis
59cda86709
unix, test: make NANOSEC a 64 bits unsigned int
...
Avoids accidental overflow / truncation when it's used in 32 bits arithmetic.
2012-06-07 17:00:01 +02:00
Ben Noordhuis
649ad50c32
unix: fix event loop stall
...
Undoes most of the changes made to libev in 7d2ea31 and c9396dd .
2012-06-06 05:12:28 +02:00
Ben Noordhuis
6fe753022f
unix, windows: add debug mode handle printer
...
Debugging tool, prints a list of active/all handles. Not actively exported.
2012-06-06 04:25:12 +02:00
Bert Belder
24f8a53f4c
windows: refactor uv_chdir implementation
2012-06-05 18:23:07 +02:00
Bert Belder
a0d2af0fd2
windows: detect when GetCurrentDirectoryW returns more than MAX_PATH chars
...
This should never happen. However the CRT has a code path to deal
with this situation, so at least detect it when it happens and return
an error, instead of potentially opening a security hole.
2012-06-05 18:23:06 +02:00
Ben Noordhuis
c8c9fe1c74
unix: move memset out of recvmsg inner loop
2012-06-05 15:42:20 +02:00
Ben Noordhuis
738b31eb3a
unix: fix loop starvation under high network load
...
uv__read() and uv__udp_recvmsg() read incoming data in a loop. If data comes
in at high speeds, the kernel receive buffer never drains and said functions
never terminate, stalling the event loop indefinitely. Limit the number of
consecutive reads to 32 to stop that from happening.
The number 32 was chosen at random. Empirically, it seems to maintain a high
throughput while still making the event loop move forward at a reasonable pace.
2012-06-05 15:27:51 +02:00
Bert Belder
be9d1ce909
windows: cast STARTUP_INFO.cbReserved2 to WORD to avoid warnings
2012-06-05 00:58:51 +02:00
Bert Belder
829eaf3e3f
windows: cast OVERLAPPED.Internal to NTSTATUS to avoid warnings
2012-06-05 00:58:50 +02:00
Bert Belder
1b75d36bab
windows: refactor uv_exepath implementation
2012-06-05 00:58:50 +02:00
Bert Belder
c9f83e524c
windows: refactor uv_cwd implementation
2012-06-05 00:58:49 +02:00
Ben Noordhuis
7d2ea31618
unix: fix event loop stall
...
Stop libev from entering the epoll_wait/kevent/port_getn/etc. syscall when
there are no active handles left, that will block indefinitely.
2012-06-04 23:36:50 +02:00
Bert Belder
64f8cf463d
windows, unix: uv_buf_init should take unsigned int for the buffer length
2012-06-04 18:04:49 +02:00
Bert Belder
c0b530d079
Windows: avoid compiler warning
2012-06-04 18:04:48 +02:00
Bert Belder
60746b03cb
windows: move some stream functions to stream-inl.h
2012-06-04 18:04:47 +02:00
Bert Belder
754a695df6
windows: move request macros to req-inl.h
2012-06-04 18:04:46 +02:00
Bert Belder
63b9b1d472
windows: move handle macros to handle-inl.h
2012-06-04 18:04:45 +02:00
Bert Belder
1974541bc9
windows: guard against including req-inl.h more than once
2012-06-04 18:04:45 +02:00
Bert Belder
3b907cf0ec
windows: guard against including handle-inl.h more than once
2012-06-04 18:04:44 +02:00
Ben Noordhuis
cb9ca142b5
unix: queue write reqs if stream is not connected
2012-06-04 16:55:04 +02:00
Fedor Indutny
a30e45f1d7
unix: remap fds 0-2 to /dev/null if ignore flag set
2012-06-04 16:14:21 +02:00
Ben Noordhuis
c76c2066c6
unix, windows: add semaphore functions
2012-06-03 04:04:05 +02:00
Ben Noordhuis
7d97ba8003
unix: make mutex sanity checks non-optional
2012-06-03 04:01:26 +02:00
Ben Noordhuis
c03964f840
unix: set PTHREAD_MUTEX_ERRORCHECK in debug mode
2012-06-03 03:53:05 +02:00
Bert Belder
d8b95eaffb
windows: inline a couple of handle functions
2012-06-02 23:38:16 +02:00
Bert Belder
d402604118
windows: inline a couple of inline request functions
2012-06-02 23:08:22 +02:00
Bert Belder
ed30365f54
uv-common: define INLINE macro
2012-06-02 23:06:43 +02:00
Bert Belder
dd1355da8d
windows: stop poll watcher when watched socket is closed locally
2012-06-02 22:36:52 +02:00
Bert Belder
bdb8b3a1f2
windows: always set FDs 0-2 for spawned child processes
2012-06-02 21:17:03 +02:00
Bert Belder
619686e9e9
windows: fix fall-through bug in init_child_stdio()
2012-06-02 21:05:06 +02:00
Bert Belder
d21fc6c333
windows: move uv_hrtime() to util.c
...
* It has nothing to do with timer handles, so it doesn't belong in
timer.c
* uv_hrtime_init() was merged into uv__util_init()
2012-06-02 20:37:08 +02:00
Bert Belder
ec95a07d00
windows/util: move initialization code to uv__util_init
2012-06-02 20:35:14 +02:00
Bert Belder
cd1298c388
windows: retrieve function pointers before doing anything else
2012-06-02 20:20:51 +02:00
Bert Belder
1d64a36caa
windows: add support for cpu times to uv_cpu_info()
...
* Also cleans up the code and makes it use unicode APIs consistently.
* Credits go to Brian White for creating an earlier version of this
patch.
Closes #327
2012-06-02 20:05:12 +02:00
Brian White
4252240e54
windows: add uv__once_init() that ensures that libuv has been initialized
2012-06-02 20:05:12 +02:00
Brian White
87f3530a1e
windows: retrieve NtQuerySystemInformation at startup
2012-06-02 20:05:11 +02:00
Bert Belder
120d997809
windows: fix NTSTATUS redefined when compiling with MinGW
...
Closes #403
Closes #422
2012-06-02 17:39:31 +02:00
Bert Belder
961e0cf8da
windows/tty: never report error after forcibly aborting line-buffered read
2012-06-02 03:08:48 +02:00
Bert Belder
07f0175239
windows: fix hang when closing an active poll handle
2012-06-01 18:39:49 +02:00
Bert Belder
3ec9c67f93
windows: improve spawn stdio support
...
* Make using an existing stream for stdio actually work
* Support up to 256 stdio channels
* Fix some minor bugs
2012-06-01 17:47:20 +02:00
Fedor Indutny
f5b5127db0
change spawn() api to allow using existing streams for stdio
...
This commit also adds support for this api on Unix.
2012-06-01 17:32:27 +02:00
Bert Belder
528123ad9a
windows: fix bugs in uv__fast_poll_cancel_poll_req
2012-06-01 03:05:31 +02:00
Charlie McConnell
69a923bf93
process: implement UV_PROCESS_DETACHED flag for uv_spawn
2012-06-01 02:24:05 +02:00
Bert Belder
aecddfe530
windows: style fix
2012-05-31 17:35:25 +02:00
Bert Belder
0c727fd774
windows: don't crash
2012-05-31 17:34:53 +02:00
Ben Noordhuis
c9396dd57e
unix: implement timers in libuv
...
* replace libev backed timers with a pure libuv implementation
* gut ev_run() and make it take a timeout instead of flags
Incidentally speeds up the loop_count_timed benchmark by about 100%.
2012-05-31 03:08:34 +02:00
Ben Noordhuis
71a66c17a1
unix: mark eio poll handles as internal
2012-05-30 02:33:50 +02:00
Ben Noordhuis
171ad8567d
unix, windows: add uv_walk()
...
Lets the libuv user iterate over the open handles. Mostly intended as a
debugging tool or a post-hoc cleanup mechanism.
2012-05-30 02:33:39 +02:00
Ben Noordhuis
122cd94695
unix: remove unused flag UV__PENDING
2012-05-30 01:34:11 +02:00
Ben Noordhuis
9d26f49725
unix, windows: rename flags UV__ACTIVE, UV__REF
...
Rename UV__ACTIVE and UV__REF to UV__HANDLE_ACTIVE and UV__HANDLE_REF to make
it clear that they apply to handles, not requests or loops.
2012-05-30 01:30:24 +02:00