Commit Graph

826 Commits

Author SHA1 Message Date
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