summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2020-08-24 08:45:29 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2020-09-14 10:17:00 +0200
commit0d4d157cf0d42206491b7a1b417c9904a9abd553 (patch)
treeaa744b0df43bd8ea3e55de6975d840edabc228ef /common
parentf9a2925439882944a50184ceec1aebe6d101d244 (diff)
downloadbarebox-0d4d157cf0d42206491b7a1b417c9904a9abd553.tar.gz
barebox-0d4d157cf0d42206491b7a1b417c9904a9abd553.tar.xz
workqueues: Add support for delayed work
Sometimes it's necessary to do some work after a delay. Add support for this case. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/workqueue.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/common/workqueue.c b/common/workqueue.c
index 6fdd4e42ea..dc6941dec1 100644
--- a/common/workqueue.c
+++ b/common/workqueue.c
@@ -7,6 +7,9 @@ static void wq_do_pending_work(struct work_queue *wq)
struct work_struct *work, *tmp;
list_for_each_entry_safe(work, tmp, &wq->work, list) {
+ if (work->delayed && get_time_ns() < work->timeout)
+ continue;
+
list_del(&work->list);
wq->fn(work);
}