Coverage Report

Created: 2025-10-28 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/hostap/src/utils/list.h
Line
Count
Source
1
/*
2
 * Doubly-linked list
3
 * Copyright (c) 2009-2019, Jouni Malinen <j@w1.fi>
4
 *
5
 * This software may be distributed under the terms of the BSD license.
6
 * See README for more details.
7
 */
8
9
#ifndef LIST_H
10
#define LIST_H
11
12
/**
13
 * struct dl_list - Doubly-linked list
14
 */
15
struct dl_list {
16
  struct dl_list *next;
17
  struct dl_list *prev;
18
};
19
20
#define DL_LIST_HEAD_INIT(l) { &(l), &(l) }
21
22
static inline void dl_list_init(struct dl_list *list)
23
6.59k
{
24
6.59k
  list->next = list;
25
6.59k
  list->prev = list;
26
6.59k
}
dpp.c:dl_list_init
Line
Count
Source
23
6.59k
{
24
6.59k
  list->next = list;
25
6.59k
  list->prev = list;
26
6.59k
}
Unexecuted instantiation: dpp_auth.c:dl_list_init
Unexecuted instantiation: dpp_backup.c:dl_list_init
Unexecuted instantiation: dpp_crypto.c:dl_list_init
Unexecuted instantiation: dpp_pkex.c:dl_list_init
Unexecuted instantiation: dpp_reconfig.c:dl_list_init
Unexecuted instantiation: dpp_tcp.c:dl_list_init
Unexecuted instantiation: dpp-uri.c:dl_list_init
Unexecuted instantiation: ieee802_11_common.c:dl_list_init
Unexecuted instantiation: eloop.c:dl_list_init
27
28
static inline void dl_list_add(struct dl_list *list, struct dl_list *item)
29
38
{
30
38
  item->next = list->next;
31
38
  item->prev = list;
32
38
  list->next->prev = item;
33
38
  list->next = item;
34
38
}
dpp.c:dl_list_add
Line
Count
Source
29
38
{
30
38
  item->next = list->next;
31
38
  item->prev = list;
32
38
  list->next->prev = item;
33
38
  list->next = item;
34
38
}
Unexecuted instantiation: dpp_auth.c:dl_list_add
Unexecuted instantiation: dpp_backup.c:dl_list_add
Unexecuted instantiation: dpp_crypto.c:dl_list_add
Unexecuted instantiation: dpp_pkex.c:dl_list_add
Unexecuted instantiation: dpp_reconfig.c:dl_list_add
Unexecuted instantiation: dpp_tcp.c:dl_list_add
Unexecuted instantiation: dpp-uri.c:dl_list_add
Unexecuted instantiation: ieee802_11_common.c:dl_list_add
Unexecuted instantiation: eloop.c:dl_list_add
35
36
static inline void dl_list_add_tail(struct dl_list *list, struct dl_list *item)
37
0
{
38
0
  dl_list_add(list->prev, item);
39
0
}
Unexecuted instantiation: dpp.c:dl_list_add_tail
Unexecuted instantiation: dpp_auth.c:dl_list_add_tail
Unexecuted instantiation: dpp_backup.c:dl_list_add_tail
Unexecuted instantiation: dpp_crypto.c:dl_list_add_tail
Unexecuted instantiation: dpp_pkex.c:dl_list_add_tail
Unexecuted instantiation: dpp_reconfig.c:dl_list_add_tail
Unexecuted instantiation: dpp_tcp.c:dl_list_add_tail
Unexecuted instantiation: dpp-uri.c:dl_list_add_tail
Unexecuted instantiation: ieee802_11_common.c:dl_list_add_tail
Unexecuted instantiation: eloop.c:dl_list_add_tail
40
41
static inline void dl_list_del(struct dl_list *item)
42
38
{
43
38
  item->next->prev = item->prev;
44
38
  item->prev->next = item->next;
45
38
  item->next = NULL;
46
38
  item->prev = NULL;
47
38
}
dpp.c:dl_list_del
Line
Count
Source
42
38
{
43
38
  item->next->prev = item->prev;
44
38
  item->prev->next = item->next;
45
38
  item->next = NULL;
46
  item->prev = NULL;
47
38
}
Unexecuted instantiation: dpp_auth.c:dl_list_del
Unexecuted instantiation: dpp_backup.c:dl_list_del
Unexecuted instantiation: dpp_crypto.c:dl_list_del
Unexecuted instantiation: dpp_pkex.c:dl_list_del
Unexecuted instantiation: dpp_reconfig.c:dl_list_del
Unexecuted instantiation: dpp_tcp.c:dl_list_del
Unexecuted instantiation: dpp-uri.c:dl_list_del
Unexecuted instantiation: ieee802_11_common.c:dl_list_del
Unexecuted instantiation: eloop.c:dl_list_del
48
49
static inline int dl_list_empty(const struct dl_list *list)
50
0
{
51
0
  return list->next == list;
52
0
}
Unexecuted instantiation: dpp.c:dl_list_empty
Unexecuted instantiation: dpp_auth.c:dl_list_empty
Unexecuted instantiation: dpp_backup.c:dl_list_empty
Unexecuted instantiation: dpp_crypto.c:dl_list_empty
Unexecuted instantiation: dpp_pkex.c:dl_list_empty
Unexecuted instantiation: dpp_reconfig.c:dl_list_empty
Unexecuted instantiation: dpp_tcp.c:dl_list_empty
Unexecuted instantiation: dpp-uri.c:dl_list_empty
Unexecuted instantiation: ieee802_11_common.c:dl_list_empty
Unexecuted instantiation: eloop.c:dl_list_empty
53
54
static inline unsigned int dl_list_len(const struct dl_list *list)
55
0
{
56
0
  struct dl_list *item;
57
0
  int count = 0;
58
0
  for (item = list->next; item != list; item = item->next)
59
0
    count++;
60
0
  return count;
61
0
}
Unexecuted instantiation: dpp.c:dl_list_len
Unexecuted instantiation: dpp_auth.c:dl_list_len
Unexecuted instantiation: dpp_backup.c:dl_list_len
Unexecuted instantiation: dpp_crypto.c:dl_list_len
Unexecuted instantiation: dpp_pkex.c:dl_list_len
Unexecuted instantiation: dpp_reconfig.c:dl_list_len
Unexecuted instantiation: dpp_tcp.c:dl_list_len
Unexecuted instantiation: dpp-uri.c:dl_list_len
Unexecuted instantiation: ieee802_11_common.c:dl_list_len
Unexecuted instantiation: eloop.c:dl_list_len
62
63
#ifndef offsetof
64
#define offsetof(type, member) ((long) &((type *) 0)->member)
65
#endif
66
67
#define dl_list_entry(item, type, member) \
68
14.9k
  ((type *) ((char *) item - offsetof(type, member)))
69
70
#define dl_list_first(list, type, member) \
71
0
  (dl_list_empty((list)) ? NULL : \
72
0
   dl_list_entry((list)->next, type, member))
73
74
#define dl_list_last(list, type, member) \
75
  (dl_list_empty((list)) ? NULL : \
76
   dl_list_entry((list)->prev, type, member))
77
78
#define dl_list_for_each(item, list, type, member) \
79
76
  for (item = dl_list_entry((list)->next, type, member); \
80
76
       &item->member != (list); \
81
76
       item = dl_list_entry(item->member.next, type, member))
82
83
#define dl_list_for_each_safe(item, n, list, type, member) \
84
6.59k
  for (item = dl_list_entry((list)->next, type, member), \
85
8.24k
         n = dl_list_entry(item->member.next, type, member); \
86
6.63k
       &item->member != (list); \
87
6.59k
       item = n, n = dl_list_entry(n->member.next, type, member))
88
89
#define dl_list_for_each_reverse(item, list, type, member) \
90
  for (item = dl_list_entry((list)->prev, type, member); \
91
       &item->member != (list); \
92
       item = dl_list_entry(item->member.prev, type, member))
93
94
#define DEFINE_DL_LIST(name) \
95
  struct dl_list name = { &(name), &(name) }
96
97
#endif /* LIST_H */