C utility functions for OpenWRT libraries
Find a file
Jo-Philipp Wich 82fa6480de uloop: add support for interval timers
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-11-02 17:49:55 +01:00
examples uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
lua uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
sh jshn.sh: Add pretty-printing to json_dump 2023-04-15 15:04:19 +02:00
tests tests: add blob-buffer overflow test 2021-04-29 15:34:21 +02:00
.gitignore examples: add shunit2 tests for json_script 2016-02-20 13:36:08 +01:00
.gitlab-ci.yml add cram based unit tests 2019-11-24 13:26:58 +01:00
assert.h add assert.h component 2019-11-24 13:26:58 +01:00
avl-cmp.c avl: add blob comparator function 2016-07-29 10:58:55 +02:00
avl-cmp.h avl: add blob comparator function 2016-07-29 10:58:55 +02:00
avl.c avl: guard against theoretical null pointer dereference 2019-11-24 13:26:58 +01:00
avl.h switch from typeof to the more portable __typeof__ 2018-04-07 15:21:33 +02:00
base64.c base64: fix possible null pointer dereference 2019-11-24 13:26:58 +01:00
blob.c blob: clear buf->head when freeing a buffer 2022-02-10 21:02:20 +01:00
blob.h Ensure blob_attr length check does not perform out of bounds reads 2019-12-25 10:31:58 +01:00
blobmsg.c blobmsg: implicitly reserve space for 0-terminator in string buf alloc 2022-05-12 13:26:29 +02:00
blobmsg.h blobmsg: add blobmsg_parse_array_attr 2023-01-03 10:43:49 +01:00
blobmsg_json.c blobmsg: Don't do at run-time what can be done at compile-time 2023-04-16 14:53:11 +02:00
blobmsg_json.h blobmsg_json: add new functions blobmsg_format_json_value* 2016-07-02 10:10:08 +02:00
CMakeLists.txt cmake: add a possibility to set library version 2020-01-20 16:54:10 +01:00
jshn.c jshn: prefer snprintf usage 2020-01-20 16:54:10 +01:00
json_script.c blobmsg: implicitly reserve space for 0-terminator in string buf alloc 2022-05-12 13:26:29 +02:00
json_script.h json_script: add support for aborting script processing 2015-11-06 22:58:15 +01:00
kvlist.c Fix various memory management issues 2016-06-26 12:53:51 +02:00
kvlist.h kvlist: add static initializer macros 2016-10-24 12:34:09 +02:00
list.h list.h: add container_of_safe macro 2022-04-29 12:57:52 +02:00
md5.c md5: add "const" qualifier to the "file" argument 2017-03-20 12:44:46 +01:00
md5.h md5: add "const" qualifier to the "file" argument 2017-03-20 12:44:46 +01:00
runqueue.c libubox: runqueue: fix use-after-free bug 2020-05-21 15:58:46 +02:00
runqueue.h libubox: runqueue: fix use-after-free bug 2020-05-21 15:58:46 +02:00
safe_list.c runqueue: add a function that allows adding jobs to the front of the runqueue 2013-11-18 12:25:21 +01:00
safe_list.h runqueue: add a function that allows adding jobs to the front of the runqueue 2013-11-18 12:25:21 +01:00
ulog.c blobmsg/ulog: fix format string compiler warnings 2019-12-07 23:47:03 +01:00
ulog.h libubox: add format string checking to ulog() 2019-06-16 16:29:47 +02:00
uloop-epoll.c uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
uloop-kqueue.c uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
uloop.c uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
uloop.h uloop: add support for interval timers 2023-11-02 17:49:55 +01:00
usock.c usock: fix poll return code check 2023-03-08 09:38:55 +01:00
usock.h usock: implement usock_inet_timeout() with RFC6555 support 2016-01-28 12:07:25 +01:00
ustream-fd.c ustream-fd: handle ENOTCONN for read/write on not-yet-connected sockets 2016-01-15 21:35:48 +01:00
ustream.c Fix various memory management issues 2016-06-26 12:53:51 +02:00
ustream.h ustream: Add format string checks to ustream_(v)printf() 2019-06-16 16:30:01 +02:00
utils.c utils: simplify mkdir_p boolean conditions 2020-12-13 12:05:45 +00:00
utils.h utils.h: add fallthrough macro 2021-05-16 17:32:00 +02:00
vlist.c vlist: constify key argument to vlist_add 2013-10-05 21:40:04 +02:00
vlist.h vlist: define vlist_for_each_element_safe 2021-11-20 17:44:11 +00:00