Coverage Report

Created: 2025-10-10 06:31

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
5.51k
{
24
5.51k
  list->next = list;
25
5.51k
  list->prev = list;
26
5.51k
}
Unexecuted instantiation: eapol-supp.c:dl_list_init
wpa.c:dl_list_init
Line
Count
Source
23
1.83k
{
24
1.83k
  list->next = list;
25
1.83k
  list->prev = list;
26
1.83k
}
Unexecuted instantiation: wpa_ie.c:dl_list_init
Unexecuted instantiation: pmksa_cache.c:dl_list_init
Unexecuted instantiation: wpa_ft.c:dl_list_init
Unexecuted instantiation: tdls.c:dl_list_init
Unexecuted instantiation: preauth.c:dl_list_init
eap.c:dl_list_init
Line
Count
Source
23
1.83k
{
24
1.83k
  list->next = list;
25
1.83k
  list->prev = list;
26
1.83k
}
Unexecuted instantiation: eap_methods.c:dl_list_init
eloop.c:dl_list_init
Line
Count
Source
23
1.83k
{
24
1.83k
  list->next = list;
25
1.83k
  list->prev = list;
26
1.83k
}
Unexecuted instantiation: ieee802_11_common.c:dl_list_init
27
28
static inline void dl_list_add(struct dl_list *list, struct dl_list *item)
29
3.67k
{
30
3.67k
  item->next = list->next;
31
3.67k
  item->prev = list;
32
3.67k
  list->next->prev = item;
33
3.67k
  list->next = item;
34
3.67k
}
Unexecuted instantiation: eapol-supp.c:dl_list_add
Unexecuted instantiation: wpa.c:dl_list_add
Unexecuted instantiation: wpa_ie.c:dl_list_add
Unexecuted instantiation: pmksa_cache.c:dl_list_add
Unexecuted instantiation: wpa_ft.c:dl_list_add
Unexecuted instantiation: tdls.c:dl_list_add
Unexecuted instantiation: preauth.c:dl_list_add
Unexecuted instantiation: eap.c:dl_list_add
Unexecuted instantiation: eap_methods.c:dl_list_add
eloop.c:dl_list_add
Line
Count
Source
29
3.67k
{
30
3.67k
  item->next = list->next;
31
3.67k
  item->prev = list;
32
3.67k
  list->next->prev = item;
33
3.67k
  list->next = item;
34
3.67k
}
Unexecuted instantiation: ieee802_11_common.c:dl_list_add
35
36
static inline void dl_list_add_tail(struct dl_list *list, struct dl_list *item)
37
1.83k
{
38
1.83k
  dl_list_add(list->prev, item);
39
1.83k
}
Unexecuted instantiation: eapol-supp.c:dl_list_add_tail
Unexecuted instantiation: wpa.c:dl_list_add_tail
Unexecuted instantiation: wpa_ie.c:dl_list_add_tail
Unexecuted instantiation: pmksa_cache.c:dl_list_add_tail
Unexecuted instantiation: wpa_ft.c:dl_list_add_tail
Unexecuted instantiation: tdls.c:dl_list_add_tail
Unexecuted instantiation: preauth.c:dl_list_add_tail
Unexecuted instantiation: eap.c:dl_list_add_tail
Unexecuted instantiation: eap_methods.c:dl_list_add_tail
eloop.c:dl_list_add_tail
Line
Count
Source
37
1.83k
{
38
1.83k
  dl_list_add(list->prev, item);
39
1.83k
}
Unexecuted instantiation: ieee802_11_common.c:dl_list_add_tail
40
41
static inline void dl_list_del(struct dl_list *item)
42
3.67k
{
43
3.67k
  item->next->prev = item->prev;
44
3.67k
  item->prev->next = item->next;
45
3.67k
  item->next = NULL;
46
3.67k
  item->prev = NULL;
47
3.67k
}
Unexecuted instantiation: eapol-supp.c:dl_list_del
Unexecuted instantiation: wpa.c:dl_list_del
Unexecuted instantiation: wpa_ie.c:dl_list_del
Unexecuted instantiation: pmksa_cache.c:dl_list_del
Unexecuted instantiation: wpa_ft.c:dl_list_del
Unexecuted instantiation: tdls.c:dl_list_del
Unexecuted instantiation: preauth.c:dl_list_del
Unexecuted instantiation: eap.c:dl_list_del
Unexecuted instantiation: eap_methods.c:dl_list_del
eloop.c:dl_list_del
Line
Count
Source
42
3.67k
{
43
3.67k
  item->next->prev = item->prev;
44
3.67k
  item->prev->next = item->next;
45
3.67k
  item->next = NULL;
46
  item->prev = NULL;
47
3.67k
}
Unexecuted instantiation: ieee802_11_common.c:dl_list_del
48
49
static inline int dl_list_empty(const struct dl_list *list)
50
5.51k
{
51
5.51k
  return list->next == list;
52
5.51k
}
Unexecuted instantiation: eapol-supp.c:dl_list_empty
Unexecuted instantiation: wpa.c:dl_list_empty
Unexecuted instantiation: wpa_ie.c:dl_list_empty
Unexecuted instantiation: pmksa_cache.c:dl_list_empty
Unexecuted instantiation: wpa_ft.c:dl_list_empty
Unexecuted instantiation: tdls.c:dl_list_empty
Unexecuted instantiation: preauth.c:dl_list_empty
Unexecuted instantiation: eap.c:dl_list_empty
Unexecuted instantiation: eap_methods.c:dl_list_empty
eloop.c:dl_list_empty
Line
Count
Source
50
5.51k
{
51
5.51k
  return list->next == list;
52
5.51k
}
Unexecuted instantiation: ieee802_11_common.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: eapol-supp.c:dl_list_len
Unexecuted instantiation: wpa.c:dl_list_len
Unexecuted instantiation: wpa_ie.c:dl_list_len
Unexecuted instantiation: pmksa_cache.c:dl_list_len
Unexecuted instantiation: wpa_ft.c:dl_list_len
Unexecuted instantiation: tdls.c:dl_list_len
Unexecuted instantiation: preauth.c:dl_list_len
Unexecuted instantiation: eap.c:dl_list_len
Unexecuted instantiation: eap_methods.c:dl_list_len
Unexecuted instantiation: eloop.c:dl_list_len
Unexecuted instantiation: ieee802_11_common.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
44.1k
  ((type *) ((char *) item - offsetof(type, member)))
69
70
#define dl_list_first(list, type, member) \
71
3.67k
  (dl_list_empty((list)) ? NULL : \
72
3.67k
   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
3.67k
  for (item = dl_list_entry((list)->next, type, member); \
80
3.67k
       &item->member != (list); \
81
3.67k
       item = dl_list_entry(item->member.next, type, member))
82
83
#define dl_list_for_each_safe(item, n, list, type, member) \
84
12.8k
  for (item = dl_list_entry((list)->next, type, member), \
85
12.8k
         n = dl_list_entry(item->member.next, type, member); \
86
23.9k
       &item->member != (list); \
87
12.8k
       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 */