Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.openwrt.org/project/libubox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-11-28uloop: fix build using C++ compilersFelix Fietkau
Rename the 'private' field to 'priv' in order to avoid using a C++ keyword Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-11-02uloop: add support for user defined signal handlersJo-Philipp Wich
Reuse and extend the existing signal waker pipe mechanism to add user defined signal handling functionality to uloop. This commit introduces two new api functions `uloop_signal_add()` and `uloop_signal_remove()` along with a new structure type `uloop_signal` to allow adding and removing arbitrary signal handlers. Registered signal handlers are maintained in a linked list and matched by their signo member value which allows registering multiple handlers for the same signal numbers. Upon registering a new signal handler, the existing handler is saved in the `uloop_signal` structure. When removing the user defined signal handler, the original behavior is restored. The Lua binding has been updated as well to support the new signal handler mechanism. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-11-02uloop: add support for interval timersJo-Philipp Wich
So far, the only way to implement periodic interval timers was to use one-shot uloop_timeout timers which are rearmed within their completion callback immediately on expiration. While simple, this approach is not very precise and interval lengths will slowly drift over time, due to callback execution overhead, scheduling granularity etc. In order to make uloop provide stable and precise interval timer capabilities, this commit introduces a new `uloop_interval` structure along with the new related `uloop_interval_set()`, `uloop_interval_cancel()` and `uloop_interval_remaining()` api functions. Periodic timers are implemented using the timerfd facility an Linux and kqueue EVFILT_TIMER events on macOS/BSD. The Lua binding has been updated to include support for the new timer type as well. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2023-05-23uloop: add support for integrating with a different event loopFelix Fietkau
- support reading the next timeout in order to determine the poll timeout - add a callback for fd add/delete/update Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-04uloop: deprecate uloop_timeout_remainingStijn Tintel
We have uloop_timeout_remaining64 now. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: Jo-Philipp Wich <jo@mein.io> Acked-by: John Crispin <john@phrozen.org>
2021-11-04uloop: add uloop_timeout_remaining64Stijn Tintel
This uses the same return type as tv_diff so we don't need to check for integer overflow. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: Jo-Philipp Wich <jo@mein.io> Acked-by: John Crispin <john@phrozen.org>
2021-11-04uloop: restore return type of uloop_timeout_remainingStijn Tintel
The uloop_timeout_remaining function is public and changing its return type breaks ABI. Change the return type back to int, and return INT_MIN or INT_MAX if the value returned by tv_diff would overflow integer. Fixes: be3dc7223a6d ("uloop: avoid integer overflow in tv_diff") Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: Jo-Philipp Wich <jo@mein.io> Acked-by: John Crispin <john@phrozen.org>
2021-11-04uloop: avoid integer overflow in tv_diffStijn Tintel
The tv_diff function can potentially overflow as soon as t2->tv_sec is larger than 2147483. This is very easily hit in ujail, after only 2147484 seconds of uptime, or 24.85 days. Improve the behaviour by changing the return type to int64_t. Fixes: FS#3943 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2017-06-01uloop: allow specifying a timeout for uloop_run()Felix Fietkau
This can be useful for cleanup with pending timers, or for hooking into existing code that does not use uloop Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-02-03uloop: add uloop_cancelling functionFelix Fietkau
Returns true if uloop_run is still running and uloop_cancelled is set Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-06-26loop: make uloop_run() return the cancelling signalMatthias Schiffer
When a process quits in response to a signal it handles, it should to so be re-sending the signal to itself. This especially important for SIGINT, as is explained in [1]. uloop currently hides the reason for quitting uloop_run(). Fix this by returning the signal that caused the loop to quit (or 0 when uloop_end() was used), so a program using loop an comply with [1]. [1] https://www.cons.org/cracauer/sigint.html Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2014-02-23uloop: Add flag to allow callback to be called on error conditions.Karl Vogel
In some conditions, an application is interested in errors happening on a file descriptor and might be able to resolve the issue in the callback function. This patch adds a flag to notify the uloop framework that errors should be passed to the callback function, instead of silently removing the fd from the polling set. Signed-off-by: Karl Vogel <karl.vogel@gmail.com>
2013-06-18uloop: fix corner cases with recursive uloop_run callsFelix Fietkau
With multiple recursive calls to uloop_run, the callback for the same fd can be run multiple times from different levels in the stack. Prevent this by tracking the stack of uloop_fd callbacks and buffering new incoming events for fds already on the stack. Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-06-18libubox: make uloop_fd::flags genericFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-06-18uloop: fix edge trigger handling on mac os xFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-01-23uloop: rename uloop_timeout_pending() to uloop_timeout_remaining()Jo-Philipp Wich
2013-01-23uloop: add uloop_timeout_pending() function to determine the remaining time ↵Jo-Philipp Wich
of an active timeout
2013-01-13uloop: replace copyright info (code has been completely rewritten over ↵Felix Fietkau
time), relicense to ISC Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-01-04uloop: improve edge trigger reliability on mac os xFelix Fietkau
Sometimes after re-arming a fd, an initial event for reads is not generated, even though there is data pending. Work around this by making the trigger level-triggered first, then switching to edge trigger after processing the first event. Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2013-01-04uloop: do less state/change tracking for kevent() on mac os x, it is unreliableFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2012-05-28uloop: include sys/types.h to make pid_t availableBenjamin Larsson
2011-05-25uloop: use list.h, add support for handling sigchldFelix Fietkau
2011-02-07make uloop_end() inlineFelix Fietkau
2011-02-06uloop: export the cancelled flagFelix Fietkau
2010-12-06uloop: add a flag for keeping the socket blockingFelix Fietkau
2010-12-05port uloop to BSD kqueueFelix Fietkau
2010-10-13Initial importFelix Fietkau