Commit Graph

1990 Commits

Author SHA1 Message Date
Ben Noordhuis
6fb31493d7 build: export _POSIX_C_SOURCE=200112 to dependents
Fix direct_dependent_settings to export _POSIX_C_SOURCE=200112 to dependent
projects. Required to make pthread_rwlock_t and pthread_barrier_t visible.
2012-12-19 15:34:19 +01:00
Saúl Ibarra Corretgé
0820be7008 Implemented uv_run2
Allows for running the event loop in 3 modes:
  * default: loop runs until the refcount drops to zero
  * once: poll for events only once and block until one is handled
  * nowait: poll for events only once but don't block if there are
    no pending events
2012-12-18 16:11:23 +01:00
Ben Noordhuis
dc559a5ce6 unix: disable relaxed accept() by default
Don't use the relaxed accept() algorithm introduced in be2a217 unless
explicitly requested. It causes a 50+% performance drop on some node.js
benchmarks:

  $ alias bench='out/Release/node benchmark/http_simple_auto.js \
    -c 10 -n 50000 bytes/1 2>&1 | grep Req'

  $ UV_TCP_SINGLE_ACCEPT=0 bench
  Requests per second:    12331.84 [#/sec] (mean)

  $ UV_TCP_SINGLE_ACCEPT=1 bench
  Requests per second:    3944.63 [#/sec] (mean)
2012-12-18 15:44:21 +01:00
Fedor Indutny
b86ed94940 kqueue: ignore ENOENT error
File descriptor might be closed during callback, all events that was reported
before the callback are not valid and trying to remove them will result
in ENOENT. This error can be safely ignored.
2012-12-18 13:48:46 +04:00
Ben Noordhuis
273cecc56f unix: don't memset(0) in uv_udp_init()
It's inconsistent with other init functions. In particular, it clobbers the
data field.

Fixes #655.
2012-12-15 21:14:39 +01:00
Ben Noordhuis
c6c5b7a901 Merge branch 'v0.8' 2012-12-14 12:07:31 +01:00
Andrew Shaffer
49977386e9 sunos: properly disarm PORT_LOADED fsevent watcher
Fixes a segmentation fault when the watched entity is changed after the watcher
has been closed.
2012-12-14 12:02:57 +01:00
Ben Noordhuis
a3b57dd598 test, bench: remove unused includes 2012-12-14 11:48:04 +01:00
Ben Noordhuis
f5b6374948 test, bench: replace strlen() with sizeof() 2012-12-14 11:47:54 +01:00
Ben Noordhuis
0a05b31a93 test: fix -Wunused-result warnings 2012-12-14 11:34:17 +01:00
Ben Noordhuis
e079a99abd unix: fix event loop stall
Fix a rather obscure bug where the event loop stalls when an I/O watcher is
stopped while an artificial event, generated with uv__io_feed(), is pending.
2012-12-13 20:17:12 +01:00
Ben Noordhuis
92fb84b751 unix: rework uv_cancel() api
Bert Belder informs me the current approach where a request is immediately
cancelled, is impossible to implement on Windows.

Rework the API to always invoke the "done" callback with an UV_ECANCELED error
code.
2012-12-13 13:46:38 +01:00
Fedor Indutny
731adacad2 unix: use select() for specific fds on OS X
kqueue(2) on osx doesn't work (emits EINVAL error) with specific fds
(i.e. /dev/tty, /dev/null, etc). When given such descriptors - start
select(2) watcher thread that will emit io events.
2012-12-09 15:43:08 +01:00
Ben Noordhuis
52c8a8617d unix: add uv_cancel() 2012-12-09 15:12:42 +01:00
Ben Noordhuis
a385ae4f59 unix: only set SO_REUSEADDR on tcp listen sockets
Avoid the extra syscall, it's a no-op for non-listening sockets.

At least, it should be - it remains to be investigated if a FreeBSD kernel bug
affects ephemeral port allocation inside connect(). See [1] for details.

[1] http://www.freebsd.org/cgi/query-pr.cgi?pr=174087
2012-12-09 14:34:33 +01:00
Ben Noordhuis
b4168cd697 build: rename LINKFLAGS to LDFLAGS 2012-12-08 08:06:12 +01:00
Ben Noordhuis
7306c5ff46 build: fix make libuv.so CFLAGS=<options>
Running a make target that builds the shared object while overriding the CFLAGS
variable from the command line, would fail with a relocation error:

   relocation R_X86_64_32 against `.text' can not be used when making a shared
   object; recompile with -fPIC

Fix that by adding -fPIC unconditionally.
2012-12-08 08:04:08 +01:00
Bert Belder
527a10f904 windows: improve / fix uv_interface_addresses
* If GetAdaptersAddresses() failed, it would return UV_OK nonetheless,
  but the `adresses` and `count` out parameters would not be set.

* When adapters were enabled or added in between the two
  GetAdaptersAddresses() calls, it would fail.

* In case of an out of memory situation, libuv would crash with a fatal
  error.

* All interface information is now stored in a single heap-allocated
  area.
2012-12-04 14:05:50 +01:00
Bert Belder
c7fca7ad84 windows: add some error code mappings 2012-12-04 14:05:50 +01:00
Bert Belder
2e4488f35a windows: improve / fix uv_interface_addresses
* If GetAdaptersAddresses() failed, it would return UV_OK nonetheless,
  but the `adresses` and `count` out parameters would not be set.

* When adapters were enabled or added in between the two
  GetAdaptersAddresses() calls, it would fail.

* In case of an out of memory situation, libuv would crash with a fatal
  error.

* All interface information is now stored in a single heap-allocated
  area.
2012-12-04 14:04:37 +01:00
Bert Belder
0f0fee548c windows: add some error code mappings 2012-12-03 17:14:06 +01:00
Ben Noordhuis
44f0fcd033 Merge branch 'v0.8'
Conflicts:
	src/unix/core.c
2012-11-29 23:34:43 +01:00
Ben Noordhuis
deb1c34774 sunos: fix uv_getaddrinfo() NULL pointer dereference 2012-11-29 23:30:48 +01:00
Ben Noordhuis
99a8d4a8c2 unix: remove unnecessary static var init
wq doesn't have to be initialized, init_once() takes care of that.

Remove the initialization so it goes into .bss instead of .data.
2012-11-29 16:54:09 +01:00
Shigeki Ohtsu
fa11db905a test: fix finished consumer number check 2012-11-29 15:40:00 +01:00
Ben Noordhuis
2be240d3cd unix: initialize thread pool mutex and condvar
It accidentally worked before this commit on Linux but not on OS X.

Fixes #637.
2012-11-29 15:34:35 +01:00
Ben Noordhuis
3a30258616 windows: fix uv_backend_fd() return value
uv__new_artificial_error() returns a uv_err_t, not an int, and we can't use
uv__set_artificial_error() because the uv_loop_t argument is const.
2012-11-29 15:23:19 +01:00
Ben Noordhuis
df1399fa75 Remove *.mk and *.Makefile from .gitignore list
The *.mk and *.Makefile files generated by gyp are stored in $TOPLEVEL/out now.

Fixes #636.
2012-11-28 21:32:43 +01:00
Ben Noordhuis
4a69c4bb5f unix: change uv_backend_timeout() prototype
* change return value to signed int
* constify loop argument
2012-11-28 17:02:30 +01:00
Fedor Indutny
09a7f85b70 unix: add uv_backend_fd() and uv_backend_timeout()
This can be used in conjuction with uv_run_once() to poll in one thread and run
the event loop's event callbacks in another.

Useful for embedding libuv's event loop in another event loop.
2012-11-28 16:30:50 +01:00
Shane Holloway
5d92ccce94 windows: add flag for hiding windows created by a spawned process
Closes GH-627
2012-11-27 16:48:46 +01:00
Ben Noordhuis
99d3102b90 unix: drop pthread dependency in threadpool.c
Replace the pthread code with their libuv counterparts. One step closer to a
shared thread pool implementation.
2012-11-26 02:08:54 +01:00
Shigeki Ohtsu
0cca5391ba unix, windows: disallow NULL worker in thread pool
See #629.
2012-11-24 01:09:49 +01:00
Ben Noordhuis
90271e1a3c darwin, freebsd: set SO_NOSIGPIPE on sockets
Suppresses delivery of SIGPIPE signals when the remote end of the socket has
gone away.
2012-11-22 17:51:56 +01:00
Ben Noordhuis
dcd3b55c19 unix: fix thread pool race condition
Send the wakeup signal to the main thread *before* releasing the lock. Doing it
the other way around introduces a race condition where the watcher may already
have been pulled off the work queue.
2012-11-22 15:01:17 +01:00
Ben Noordhuis
5639b2f1f9 linux: use /proc/cpuinfo for CPU frequency
Obtain the CPU frequency from /proc/cpuinfo because there may not be any
cpufreq info available in /sys. This also means that the reported CPU speed
from now on is the *maximum* speed, not the *actual* speed the CPU runs at.

This change only applies to x86 because ARM and MIPS don't report that
information in /proc/cpuinfo.

Fixes #588.

This is a back-port of commit 775064a from the master branch.
2012-11-20 19:20:16 +01:00
Ben Noordhuis
fc5984fb45 build: fix dragonflybsd gyp build
Depends on a not-yet-landed gyp patch: https://codereview.chromium.org/11348152/
2012-11-20 16:48:58 +01:00
Ben Noordhuis
d8a8379751 test: disable fs event test on dragonflybsd
Disable the fs_event_close_in_callback test on DragonFlyBSD, like we do on the
other BSDs.

The test doesn't work with kqueue-based file notifications, the event is
generated before the file is watched. Maybe we should remove it altogether.
2012-11-20 00:46:12 +01:00
Ben Noordhuis
e997dd5981 dragonflybsd: fix uv_fs_futime() 2012-11-20 00:38:24 +01:00
Ben Noordhuis
5aa6298099 dragonflybsd: make uv_cpu_info() less broken 2012-11-20 00:27:00 +01:00
Ben Noordhuis
172d495bb8 build: fix dragonflybsd build, link with libkvm 2012-11-19 23:57:29 +01:00
Ben Noordhuis
3e9344fd34 build: remove unused EV_CONFIG var 2012-11-19 23:53:41 +01:00
Ben Noordhuis
190db15638 unix: set proper loop errno for udp write req cb
Harmonize with stream.c and tcp.c: when a handle is closed that has pending
writes queued up, run the callbacks with loop->err.code set to UV_ECANCELED,
not UV_EINTR.
2012-11-19 04:02:42 +01:00
Ben Noordhuis
665a316aa9 unix: remove libev 2012-11-16 17:33:29 +01:00
Ben Noordhuis
65bb6f068e unix: rename UV__IO_* constants 2012-11-16 17:33:29 +01:00
Ben Noordhuis
1282d64868 unix: remove dependency on libev 2012-11-16 17:33:25 +01:00
Ben Noordhuis
59a2c63931 bench: remove dead and buggy code
Pipe accept benchmarks have never been implemented, remove the code path.

Said code path also contained a bug: it tried to bind to the same pipe that is
bound to a few lines down.
2012-11-16 02:24:23 +01:00
Ben Noordhuis
a28bc88708 bench: print benchmark name in async/async_pummel 2012-11-16 02:24:22 +01:00
Stephen Gallagher
05aac92913 include: export uv_inet_* functions 2012-11-15 21:48:41 +01:00
Ben Noordhuis
c252bcb3f0 bench: fix loop starvation bug
Don't keep writing until the write queue fills up. On fast systems (mine), that
never happens - the data is sent out as fast as the benchmark generates it.
2012-11-15 01:02:07 +01:00