#
7c491bde |
| 11-Jul-2024 |
Viacheslav Muravyev |
unix,win: remove unused req parameter from macros (#4435) Remove the unused `req` parameter from the uv__req_register and uv__req_unregister macros.
|
#
1b01b786 |
| 24-May-2023 |
Ben Noordhuis |
unix,win: replace QUEUE with struct uv__queue (#4022) Recent versions of gcc have started emitting warnings about the liberal type casting inside the QUEUE macros. Although the warnings
unix,win: replace QUEUE with struct uv__queue (#4022) Recent versions of gcc have started emitting warnings about the liberal type casting inside the QUEUE macros. Although the warnings are false positives, let's use them as the impetus to switch to a type-safer and arguably cleaner approach. Fixes: https://github.com/libuv/libuv/issues/4019
show more ...
|
#
962b8e62 |
| 23-May-2023 |
Santiago Gimeno |
linux: add some more iouring backed fs ops (#4012) Specifically: `link`, `mkdir`, `rename`, `symlink` and `unlink`.
|
#
6e073ef5 |
| 01-May-2023 |
Ben Noordhuis |
linux: use io_uring to batch epoll_ctl calls (#3979) This work was sponsored by ISC, the Internet Systems Consortium.
|
#
e02642cf |
| 17-Apr-2023 |
Trevor Norris |
src: fix events/events_waiting metrics counter (#3957) The worker pool calls all callbacks locally within the queue. So the value of nevents doesn't properly reflect that case. Increase
src: fix events/events_waiting metrics counter (#3957) The worker pool calls all callbacks locally within the queue. So the value of nevents doesn't properly reflect that case. Increase the number of events directly from the worker pool's callback to correct this. In order to properly determine if the events_waiting counter needs to be incremented, store the timeout value at the time the event provider was called.
show more ...
|
#
d2c31f42 |
| 18-Apr-2023 |
Ben Noordhuis |
linux: introduce io_uring support (#3952) Add io_uring support for several asynchronous file operations: - read, write - fsync, fdatasync - stat, fstat, lstat io_ur
linux: introduce io_uring support (#3952) Add io_uring support for several asynchronous file operations: - read, write - fsync, fdatasync - stat, fstat, lstat io_uring is used when the kernel is new enough, otherwise libuv simply falls back to the thread pool. Performance looks great; an 8x increase in throughput has been observed. This work was sponsored by ISC, the Internet Systems Consortium. Fixes: https://github.com/libuv/libuv/issues/1947
show more ...
|
#
2f33980a |
| 12-Apr-2023 |
Trevor Norris |
src: switch to use C11 atomics where available (#3950) Switch all code in unix/ to use C11 atomics directly. Change uv_library_shutdown() to use an exchange instead of load/store.
src: switch to use C11 atomics where available (#3950) Switch all code in unix/ to use C11 atomics directly. Change uv_library_shutdown() to use an exchange instead of load/store. Unfortunately MSVC only started supporting C11 atomics in VS2022 version 17.5 Preview 2 as experimental. So resort to using the Interlocked API. Ref: https://devblogs.microsoft.com/cppblog/c11-atomics-in-visual-studio-2022-version-17-5-preview-2/ Fixes: https://github.com/libuv/libuv/issues/3948
show more ...
|
#
55b5d88b |
| 18-Jan-2023 |
Ben Noordhuis |
unix,win: use static_assert when available (#3189) Fixes: https://github.com/libuv/libuv/issues/3131
|
#
434eb4b0 |
| 14-Jan-2023 |
Ben Noordhuis |
linux: handle cpu hotplugging in uv_cpu_info() (#3861) On Linux, CPUs can come online or go offline while uv_cpu_info() is busy gathering data. Change uv_cpu_info() in the following ways
linux: handle cpu hotplugging in uv_cpu_info() (#3861) On Linux, CPUs can come online or go offline while uv_cpu_info() is busy gathering data. Change uv_cpu_info() in the following ways: 1. Learn online CPUs from /proc/stat 2. Get the model name from /proc/cpuinfo when it has a matching CPU, or default to "unknown" 3. Get speed from /sys/devices/system/cpu/cpu%u/cpufreq/scaling_cur_freq when it exists, or default to 0 Before this commit, libuv read the speed from /proc/cpuinfo but that reports the base frequency, not the actual frequency. My system has two cores running permanently at 3.6 GHz but libuv thought all 12 ran at 2.2 GHz. Fixes: https://github.com/libuv/libuv/issues/2351 Fixes: https://github.com/libuv/libuv/issues/3858
show more ...
|
#
e1415860 |
| 11-Nov-2022 |
Trevor Norris |
src: add new metrics APIs (#3749) The following metrics are now always recorded and available via the new uv_metrics_info() API. * loop_count: Number of event loop iterations.
src: add new metrics APIs (#3749) The following metrics are now always recorded and available via the new uv_metrics_info() API. * loop_count: Number of event loop iterations. * events: Total number of events processed by the event handler. * events_waiting: Total number of events waiting in the event queue when the event provider request was made. Benchmarking has shown no noticeable impact recording these metrics. PR-URL: https://github.com/libuv/libuv/pull/3749
show more ...
|
#
7bccb562 |
| 03-Aug-2022 |
Santiago Gimeno |
unix,win: remove UV_HANDLE_SHUTTING flag (#3705) Replace it with a `uv__is_stream_shutting()` macro that checks the `shutdown_req` field. It partially fixes: https://github.com/
unix,win: remove UV_HANDLE_SHUTTING flag (#3705) Replace it with a `uv__is_stream_shutting()` macro that checks the `shutdown_req` field. It partially fixes: https://github.com/libuv/libuv/issues/3663.
show more ...
|
#
495ffca2 |
| 15-Jul-2022 |
Ben Noordhuis |
win: remove stdint-msvc2008.h (#3673) Support for VS 2008 was removed two years ago in commit a779fccfd so this file can safely be deleted.
|
#
bae2992c |
| 09-Mar-2022 |
Jameson Nash |
process: fix hang after NOTE_EXIT (#3521) Bug #3504 seems to affect more platforms than just OpenBSD. As this seems to be a race condition in these kernels, we do not want to fail be
process: fix hang after NOTE_EXIT (#3521) Bug #3504 seems to affect more platforms than just OpenBSD. As this seems to be a race condition in these kernels, we do not want to fail because of it. Instead, we remove the WNOHANG flag from waitpid, and track exactly which processes have exited. Should also be a slight speed improvement for excessively large numbers of live children.
show more ...
|
#
5c85d67b |
| 13-Jul-2021 |
Ryan Liptak |
doc,udp: note that suggested_size is 1 max-sized dgram The intention here is to make working with recvmmsg more straight-forward, since internally libuv expects buffers that are mult
doc,udp: note that suggested_size is 1 max-sized dgram The intention here is to make working with recvmmsg more straight-forward, since internally libuv expects buffers that are multiples of UV__UDP_DGRAM_MAXSIZE, but previously the availability of that value wasn't readily apparent to the caller. Closes: https://github.com/libuv/libuv/issues/2822 Closes: https://github.com/libuv/libuv/issues/1025 Closes: https://github.com/libuv/libuv/pull/1114 PR-URL: https://github.com/libuv/libuv/pull/2986 Reviewed-By: Jameson Nash <vtjnash@gmail.com>
show more ...
|
#
99eb736b |
| 10-Jun-2021 |
Jameson Nash |
win,tcp: make uv_close work more like unix This is an attempt to fix some resource management issues on Windows. Win32 sockets have an issue where it sends an RST packet if there is
win,tcp: make uv_close work more like unix This is an attempt to fix some resource management issues on Windows. Win32 sockets have an issue where it sends an RST packet if there is an outstanding overlapped calls. We can avoid that by being certain to explicitly cancel our read and write requests first. This also removes some conditional cleanup code, since we might as well clean it up eagerly (like unix). Otherwise, it looks to me like these might cause the accept callbacks to be run after the endgame had freed the memory for them. The comment here seems mixed up between send and recv buffers. The default behavior on calling `closesocket` is already to do a graceful shutdown (see https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-closesocket with default l_onoff=zero) if it is the last open handle. The expected behavior if there are pending reads in flight is to send an RST packet, notifying the client that the server connection was destroyed before acknowledging the EOF. Additionally, we need to cancel writes explicitly: we need to notify Win32 that it is okay to cancel these writes (so it doesn't also generate an RST packet on the wire). Refs: https://github.com/libuv/libuv/pull/3035 Refs: https://github.com/nodejs/node/pull/35946 Refs: https://github.com/nodejs/node/issues/35904 Fixes: https://github.com/libuv/libuv/issues/3034 PR-URL: https://github.com/libuv/libuv/pull/3036 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
show more ...
|
Revision tags: v1.41.0, v1.40.0, v1.39.0, v1.38.1 |
|
#
06b73174 |
| 08-Jun-2020 |
Ben Noordhuis |
unix,win: harmonize uv_read_start() error handling The behavior of `uv_read_start()` when the handle is closing or already busy reading wasn't consistent across platforms. Now it is.
unix,win: harmonize uv_read_start() error handling The behavior of `uv_read_start()` when the handle is closing or already busy reading wasn't consistent across platforms. Now it is. Fixes: https://github.com/libuv/help/issues/137 PR-URL: https://github.com/libuv/libuv/pull/2795 Reviewed-By: Jameson Nash <vtjnash@gmail.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com>
show more ...
|
Revision tags: v1.38.0, v1.37.0, v1.36.0 |
|
#
e8effd45 |
| 26-Mar-2020 |
Trevor Norris |
core: add API to measure event loop idle time The API addition `uv_metrics_idle_time()` is a thread safe call that allows the user to retrieve the amount of time the event loop has spent
core: add API to measure event loop idle time The API addition `uv_metrics_idle_time()` is a thread safe call that allows the user to retrieve the amount of time the event loop has spent in the kernel's event provider (i.e. poll). It was done this way to allow retrieving this value without needing to interrupt the execution of the event loop. This option can be enabled by passing `UV_METRICS_IDLE_TIME` to `uv_loop_configure()`. One important aspect of this change is, when enabled, to always first call the event provider with a `timeout == 0`. This allows libuv to know whether any events were waiting in the event queue when the event provider was called. The importance of this is because libuv is tracking the amount of "idle time", not "poll time". Thus the provider entry time is not recorded when `timeout == 0` (the event provider never idles in this case). While this does add a small amount of overhead, when enabled, but the overhead decreases when the event loop has a heavier load. This is because poll events will be waiting when the event provider is called. Thus never actually recording the provider entry time. Checking if `uv_loop_t` is configured with `UV_METRICS_IDLE_TIME` always happens in `uv__metrics_set_provider_entry_time()` and `uv__metrics_update_idle_time()`. Making the conditional logic wrapping each call simpler and allows for instrumentation to always hook into those two function calls. Rather than placing the fields directly on `uv__loop_internal_fields_t` add the struct `uv__loop_metrics_t` as a location for future metrics API additions. Tests and additional documentation has been included. PR-URL: https://github.com/libuv/libuv/pull/2725 Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Jameson Nash <vtjnash@gmail.com>
show more ...
|
#
70bbc093 |
| 18-Mar-2020 |
Trevor Norris |
include: add internal fields struct to uv_loop_t Add struct `uv__loop_internal_fields_t` as a location for future additions to `uv_loop_t` while also maintaining v1.x compatibility.
include: add internal fields struct to uv_loop_t Add struct `uv__loop_internal_fields_t` as a location for future additions to `uv_loop_t` while also maintaining v1.x compatibility. Currently `uv__loop_internal_fields_t` only contains the `flags` field. The reason for adding the `flags` field is because the same field was never added to `UV_LOOP_PRIVATE_FIELDS` in Windows as it was in Unix. The idea for creating a struct and attaching it to `uv_loop_t` for future API enhancements was taken from a comment by bnoordhuis in: https://github.com/libuv/libuv/issues/2506#issuecomment-540050665 Also add `internal_fields` to `uv_loop_t` to store the pointer to `uv__loop_internal_fields_t`. This naming makes more sense than just using `active_reqs.unused[1]`. To maintain ABI compatibility, shrink the `unused` array. PR-URL: https://github.com/libuv/libuv/pull/2725 Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Jameson Nash <vtjnash@gmail.com>
show more ...
|
#
41f57320 |
| 18-Jun-2020 |
Ben Noordhuis |
unix: fix gcc atomics feature check `__atomic_load_n()` and friends were added in gcc 4.7.0 but we still have some centos6 machines with a vintage gcc 4.4.7 from 2012 in the CI matri
unix: fix gcc atomics feature check `__atomic_load_n()` and friends were added in gcc 4.7.0 but we still have some centos6 machines with a vintage gcc 4.4.7 from 2012 in the CI matrix. PR-URL: https://github.com/libuv/libuv/pull/2888 Refs: https://github.com/libuv/libuv/pull/2886 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
show more ...
|
#
c70dd705 |
| 16-Jun-2020 |
Ben Noordhuis |
unix: use relaxed loads/stores for feature checks Make ThreadSanitizer stop complaining about the static variables that libuv uses to record the presence (or lack) of system calls and ot
unix: use relaxed loads/stores for feature checks Make ThreadSanitizer stop complaining about the static variables that libuv uses to record the presence (or lack) of system calls and other kernel features. Fixes: https://github.com/libuv/libuv/issues/2884 PR-URL: https://github.com/libuv/libuv/pull/2886 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Jameson Nash <vtjnash@gmail.com>
show more ...
|
#
aa7b62ef |
| 28-Apr-2020 |
Ben Noordhuis |
win: make uv_udp_init_ex() accept UV_UDP_RECVMMSG Commit 5736658b ("udp: add flag to enable recvmmsg(2) explicitly") added the flag but didn't update the validation logic in src/win/udp.
win: make uv_udp_init_ex() accept UV_UDP_RECVMMSG Commit 5736658b ("udp: add flag to enable recvmmsg(2) explicitly") added the flag but didn't update the validation logic in src/win/udp.c. This commit moves the validation logic to src/uv-common.c. The flag is now accepted as a no-op on Windows. Fixes: https://github.com/libuv/libuv/issues/2806 PR-URL: https://github.com/libuv/libuv/pull/2809 Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
show more ...
|
#
72fe3543 |
| 22-Apr-2020 |
Ben Noordhuis |
unix,win: add uv_library_shutdown() Make it possible to explicitly tell libuv to release any resources it's still holding onto (memory, threads, file descriptors, etc.) Before t
unix,win: add uv_library_shutdown() Make it possible to explicitly tell libuv to release any resources it's still holding onto (memory, threads, file descriptors, etc.) Before this commit, cleanup was performed in various destructors. This commit centralizes the cleanup logic, enabling the addition of `uv_library_shutdown()`, but maintains the current observable behavior of cleaning up when libuv is unloaded by means of `dlclose(3)`. Fixes: https://github.com/libuv/libuv/issues/2763 PR-URL: https://github.com/libuv/libuv/pull/2764 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
show more ...
|
#
5736658b |
| 18-Apr-2020 |
Saúl Ibarra Corretgé |
udp: add flag to enable recvmmsg(2) explicitly Instead of implicitly enabling it by checking the supplied buffer size to alloc_cb, have a dedicated flag that must be set on `uv_udp_init_
udp: add flag to enable recvmmsg(2) explicitly Instead of implicitly enabling it by checking the supplied buffer size to alloc_cb, have a dedicated flag that must be set on `uv_udp_init_ex`. Fixes: https://github.com/libuv/libuv/issues/2791 Closes: https://github.com/libuv/libuv/pull/2792 PR-URL: https://github.com/libuv/libuv/pull/2799 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
show more ...
|
Revision tags: v1.35.0 |
|
#
1bcfbfd0 |
| 10-Mar-2020 |
Ben Noordhuis |
src: add uv__reallocf() Modeled after FreeBSD's `reallocf(3)`: a version of `realloc(3)` that frees the memory when reallocation fails, simplifying error handling in many cases.
src: add uv__reallocf() Modeled after FreeBSD's `reallocf(3)`: a version of `realloc(3)` that frees the memory when reallocation fails, simplifying error handling in many cases. PR-URL: https://github.com/libuv/libuv/pull/2735 Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
show more ...
|
Revision tags: v1.34.2, v1.34.1, v1.34.0, v1.33.1, v1.33.0, v1.32.0, v1.31.0, v1.30.1, v1.30.0, v1.29.1, v1.29.0, v1.28.0, v1.27.0, v1.26.0, v1.25.0, v1.24.1, v1.24.0, v1.23.2, v1.23.1, v1.23.0, v1.22.0, v1.21.0, v1.20.3, v1.20.2, v1.20.1, v1.20.0, v1.19.2, v1.19.1, v1.19.0, v1.18.0, v1.17.0, v1.16.1, v1.16.0, v1.15.0, v1.14.1, v1.14.0, v1.13.1, v1.13.0, v1.12.0, v1.11.0, v1.10.2, v1.10.1, v1.10.0, v0.10.37, v1.9.1, v1.9.0, v1.8.0, v1.7.5, v1.7.4, v1.7.3, v1.7.2, v1.7.1, v1.7.0, v1.6.1, v1.6.0, v1.5.0, v0.10.36, v1.4.2, v0.10.35, v1.4.1, v0.10.34, v1.4.0 |
|
#
99440bb6 |
| 30-Jan-2015 |
cjihrig |
unix,win: add uv_fs_{open,read,close}dir() Co-authored-by: Julien Gilli <jgilli@nodejs.org> Co-authored-by: Jeremy Whitlock <jwhitlock@apache.org> Reviewed-By: Ben Noordhuis <info@bn
unix,win: add uv_fs_{open,read,close}dir() Co-authored-by: Julien Gilli <jgilli@nodejs.org> Co-authored-by: Jeremy Whitlock <jwhitlock@apache.org> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> PR-URL: https://github.com/libuv/libuv/pull/2057 Refs: https://github.com/joyent/libuv/issues/1430 Refs: https://github.com/joyent/libuv/pull/1521 Refs: https://github.com/joyent/libuv/pull/1574 Refs: https://github.com/libuv/libuv/pull/175 Refs: https://github.com/nodejs/node/issues/583 Refs: https://github.com/libuv/libuv/pull/416 Refs: https://github.com/libuv/libuv/issues/170
show more ...
|