Coverage Report

Created: 2026-10-17 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/barebox/common/workqueue.c
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-only
2
#include <common.h>
3
#include <work.h>
4
5
static void wq_do_pending_work(struct work_queue *wq)
6
0
{
7
0
  struct work_struct *work, *tmp;
8
9
0
  list_for_each_entry_safe(work, tmp, &wq->work, list) {
10
0
    if (work->delayed && get_time_ns() < work->timeout)
11
0
      continue;
12
13
0
    list_del(&work->list);
14
0
    wq->fn(work);
15
0
  }
16
0
}
17
18
void wq_cancel_work(struct work_queue *wq)
19
0
{
20
0
  struct work_struct *work, *tmp;
21
22
0
  list_for_each_entry_safe(work, tmp, &wq->work, list) {
23
0
    list_del(&work->list);
24
0
    wq->cancel(work);
25
0
  }
26
0
}
27
28
static LIST_HEAD(work_queues);
29
30
/**
31
 * wq_do_all_works - do all pending work
32
 *
33
 * This calls all pending work functions
34
 */
35
void wq_do_all_works(void)
36
0
{
37
0
  struct work_queue *wq;
38
39
0
  list_for_each_entry(wq, &work_queues, list)
40
0
    wq_do_pending_work(wq);
41
0
}
42
43
/**
44
 * wq_register - register a new work queue
45
 * @wq:    The work queue
46
 */
47
void wq_register(struct work_queue *wq)
48
0
{
49
0
  INIT_LIST_HEAD(&wq->work);
50
0
  list_add_tail(&wq->list, &work_queues);
51
0
}
52
53
/**
54
 * wq_unregister - unregister a work queue
55
 * @wq:    The work queue
56
 */
57
void wq_unregister(struct work_queue *wq)
58
0
{
59
0
  wq_cancel_work(wq);
60
0
  list_del(&wq->list);
61
0
}