/src/hostap/src/utils/list.h
Line | Count | Source (jump to first uncovered line) |
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 | 8.76k | { |
24 | 8.76k | list->next = list; |
25 | 8.76k | list->prev = list; |
26 | 8.76k | } Unexecuted instantiation: driver_common.c:dl_list_init Unexecuted instantiation: ap-mgmt.c:dl_list_init Line | Count | Source | 23 | 4.38k | { | 24 | 4.38k | list->next = list; | 25 | 4.38k | list->prev = list; | 26 | 4.38k | } |
Unexecuted instantiation: ap_list.c:dl_list_init Unexecuted instantiation: beacon.c:dl_list_init Unexecuted instantiation: dfs.c:dl_list_init Unexecuted instantiation: hostapd.c:dl_list_init Unexecuted instantiation: hs20.c:dl_list_init Unexecuted instantiation: hw_features.c:dl_list_init Unexecuted instantiation: ieee802_11_auth.c:dl_list_init Unexecuted instantiation: ieee802_11.c:dl_list_init Unexecuted instantiation: ieee802_11_ht.c:dl_list_init Unexecuted instantiation: ieee802_11_shared.c:dl_list_init Unexecuted instantiation: ieee802_1x.c:dl_list_init Unexecuted instantiation: neighbor_db.c:dl_list_init Unexecuted instantiation: ndisc_snoop.c:dl_list_init Unexecuted instantiation: pmksa_cache_auth.c:dl_list_init Unexecuted instantiation: rrm.c:dl_list_init Line | Count | Source | 23 | 2.19k | { | 24 | 2.19k | list->next = list; | 25 | 2.19k | list->prev = list; | 26 | 2.19k | } |
Unexecuted instantiation: utils.c:dl_list_init Unexecuted instantiation: vlan_init.c:dl_list_init Unexecuted instantiation: wmm.c:dl_list_init Unexecuted instantiation: wpa_auth.c:dl_list_init Unexecuted instantiation: wpa_auth_ft.c:dl_list_init Unexecuted instantiation: wpa_auth_glue.c:dl_list_init Unexecuted instantiation: wpa_auth_ie.c:dl_list_init Unexecuted instantiation: wps_hostapd.c:dl_list_init Unexecuted instantiation: x_snoop.c:dl_list_init Unexecuted instantiation: accounting.c:dl_list_init Unexecuted instantiation: ap_drv_ops.c:dl_list_init Unexecuted instantiation: ap_mlme.c:dl_list_init Unexecuted instantiation: airtime_policy.c:dl_list_init Unexecuted instantiation: authsrv.c:dl_list_init Unexecuted instantiation: bss_load.c:dl_list_init Unexecuted instantiation: dhcp_snoop.c:dl_list_init Unexecuted instantiation: eap_user_db.c:dl_list_init Unexecuted instantiation: eth_p_oui.c:dl_list_init Unexecuted instantiation: gas_serv.c:dl_list_init Unexecuted instantiation: tkip_countermeasures.c:dl_list_init Unexecuted instantiation: eapol_auth_sm.c:dl_list_init Line | Count | Source | 23 | 2.19k | { | 24 | 2.19k | list->next = list; | 25 | 2.19k | list->prev = list; | 26 | 2.19k | } |
Unexecuted instantiation: hw_features_common.c:dl_list_init Unexecuted instantiation: ieee802_11_common.c:dl_list_init Unexecuted instantiation: ptksa_cache.c:dl_list_init Unexecuted instantiation: wps_registrar.c:dl_list_init Unexecuted instantiation: eap_server.c:dl_list_init Unexecuted instantiation: eap_server_methods.c:dl_list_init |
27 | | |
28 | | static inline void dl_list_add(struct dl_list *list, struct dl_list *item) |
29 | 6.57k | { |
30 | 6.57k | item->next = list->next; |
31 | 6.57k | item->prev = list; |
32 | 6.57k | list->next->prev = item; |
33 | 6.57k | list->next = item; |
34 | 6.57k | } Unexecuted instantiation: driver_common.c:dl_list_add Unexecuted instantiation: ap-mgmt.c:dl_list_add Unexecuted instantiation: ap_config.c:dl_list_add Unexecuted instantiation: ap_list.c:dl_list_add Unexecuted instantiation: beacon.c:dl_list_add Unexecuted instantiation: dfs.c:dl_list_add Unexecuted instantiation: hostapd.c:dl_list_add Unexecuted instantiation: hs20.c:dl_list_add Unexecuted instantiation: hw_features.c:dl_list_add Unexecuted instantiation: ieee802_11_auth.c:dl_list_add Unexecuted instantiation: ieee802_11.c:dl_list_add Unexecuted instantiation: ieee802_11_ht.c:dl_list_add Unexecuted instantiation: ieee802_11_shared.c:dl_list_add Unexecuted instantiation: ieee802_1x.c:dl_list_add Unexecuted instantiation: neighbor_db.c:dl_list_add Unexecuted instantiation: ndisc_snoop.c:dl_list_add Unexecuted instantiation: pmksa_cache_auth.c:dl_list_add Unexecuted instantiation: rrm.c:dl_list_add Unexecuted instantiation: sta_info.c:dl_list_add Unexecuted instantiation: utils.c:dl_list_add Unexecuted instantiation: vlan_init.c:dl_list_add Unexecuted instantiation: wmm.c:dl_list_add Unexecuted instantiation: wpa_auth.c:dl_list_add Unexecuted instantiation: wpa_auth_ft.c:dl_list_add Unexecuted instantiation: wpa_auth_glue.c:dl_list_add Unexecuted instantiation: wpa_auth_ie.c:dl_list_add Unexecuted instantiation: wps_hostapd.c:dl_list_add Unexecuted instantiation: x_snoop.c:dl_list_add Unexecuted instantiation: accounting.c:dl_list_add Unexecuted instantiation: ap_drv_ops.c:dl_list_add Unexecuted instantiation: ap_mlme.c:dl_list_add Unexecuted instantiation: airtime_policy.c:dl_list_add Unexecuted instantiation: authsrv.c:dl_list_add Unexecuted instantiation: bss_load.c:dl_list_add Unexecuted instantiation: dhcp_snoop.c:dl_list_add Unexecuted instantiation: eap_user_db.c:dl_list_add Unexecuted instantiation: eth_p_oui.c:dl_list_add Unexecuted instantiation: gas_serv.c:dl_list_add Unexecuted instantiation: tkip_countermeasures.c:dl_list_add Unexecuted instantiation: eapol_auth_sm.c:dl_list_add Line | Count | Source | 29 | 6.57k | { | 30 | 6.57k | item->next = list->next; | 31 | 6.57k | item->prev = list; | 32 | 6.57k | list->next->prev = item; | 33 | 6.57k | list->next = item; | 34 | 6.57k | } |
Unexecuted instantiation: hw_features_common.c:dl_list_add Unexecuted instantiation: ieee802_11_common.c:dl_list_add Unexecuted instantiation: ptksa_cache.c:dl_list_add Unexecuted instantiation: wps_registrar.c:dl_list_add Unexecuted instantiation: eap_server.c:dl_list_add Unexecuted instantiation: eap_server_methods.c:dl_list_add |
35 | | |
36 | | static inline void dl_list_add_tail(struct dl_list *list, struct dl_list *item) |
37 | 2.19k | { |
38 | 2.19k | dl_list_add(list->prev, item); |
39 | 2.19k | } Unexecuted instantiation: driver_common.c:dl_list_add_tail Unexecuted instantiation: ap-mgmt.c:dl_list_add_tail Unexecuted instantiation: ap_config.c:dl_list_add_tail Unexecuted instantiation: ap_list.c:dl_list_add_tail Unexecuted instantiation: beacon.c:dl_list_add_tail Unexecuted instantiation: dfs.c:dl_list_add_tail Unexecuted instantiation: hostapd.c:dl_list_add_tail Unexecuted instantiation: hs20.c:dl_list_add_tail Unexecuted instantiation: hw_features.c:dl_list_add_tail Unexecuted instantiation: ieee802_11_auth.c:dl_list_add_tail Unexecuted instantiation: ieee802_11.c:dl_list_add_tail Unexecuted instantiation: ieee802_11_ht.c:dl_list_add_tail Unexecuted instantiation: ieee802_11_shared.c:dl_list_add_tail Unexecuted instantiation: ieee802_1x.c:dl_list_add_tail Unexecuted instantiation: neighbor_db.c:dl_list_add_tail Unexecuted instantiation: ndisc_snoop.c:dl_list_add_tail Unexecuted instantiation: pmksa_cache_auth.c:dl_list_add_tail Unexecuted instantiation: rrm.c:dl_list_add_tail Unexecuted instantiation: sta_info.c:dl_list_add_tail Unexecuted instantiation: utils.c:dl_list_add_tail Unexecuted instantiation: vlan_init.c:dl_list_add_tail Unexecuted instantiation: wmm.c:dl_list_add_tail Unexecuted instantiation: wpa_auth.c:dl_list_add_tail Unexecuted instantiation: wpa_auth_ft.c:dl_list_add_tail Unexecuted instantiation: wpa_auth_glue.c:dl_list_add_tail Unexecuted instantiation: wpa_auth_ie.c:dl_list_add_tail Unexecuted instantiation: wps_hostapd.c:dl_list_add_tail Unexecuted instantiation: x_snoop.c:dl_list_add_tail Unexecuted instantiation: accounting.c:dl_list_add_tail Unexecuted instantiation: ap_drv_ops.c:dl_list_add_tail Unexecuted instantiation: ap_mlme.c:dl_list_add_tail Unexecuted instantiation: airtime_policy.c:dl_list_add_tail Unexecuted instantiation: authsrv.c:dl_list_add_tail Unexecuted instantiation: bss_load.c:dl_list_add_tail Unexecuted instantiation: dhcp_snoop.c:dl_list_add_tail Unexecuted instantiation: eap_user_db.c:dl_list_add_tail Unexecuted instantiation: eth_p_oui.c:dl_list_add_tail Unexecuted instantiation: gas_serv.c:dl_list_add_tail Unexecuted instantiation: tkip_countermeasures.c:dl_list_add_tail Unexecuted instantiation: eapol_auth_sm.c:dl_list_add_tail Line | Count | Source | 37 | 2.19k | { | 38 | 2.19k | dl_list_add(list->prev, item); | 39 | 2.19k | } |
Unexecuted instantiation: hw_features_common.c:dl_list_add_tail Unexecuted instantiation: ieee802_11_common.c:dl_list_add_tail Unexecuted instantiation: ptksa_cache.c:dl_list_add_tail Unexecuted instantiation: wps_registrar.c:dl_list_add_tail Unexecuted instantiation: eap_server.c:dl_list_add_tail Unexecuted instantiation: eap_server_methods.c:dl_list_add_tail |
40 | | |
41 | | static inline void dl_list_del(struct dl_list *item) |
42 | 6.57k | { |
43 | 6.57k | item->next->prev = item->prev; |
44 | 6.57k | item->prev->next = item->next; |
45 | 6.57k | item->next = NULL; |
46 | 6.57k | item->prev = NULL; |
47 | 6.57k | } Unexecuted instantiation: driver_common.c:dl_list_del Unexecuted instantiation: ap-mgmt.c:dl_list_del Unexecuted instantiation: ap_config.c:dl_list_del Unexecuted instantiation: ap_list.c:dl_list_del Unexecuted instantiation: beacon.c:dl_list_del Unexecuted instantiation: dfs.c:dl_list_del Unexecuted instantiation: hostapd.c:dl_list_del Unexecuted instantiation: hs20.c:dl_list_del Unexecuted instantiation: hw_features.c:dl_list_del Unexecuted instantiation: ieee802_11_auth.c:dl_list_del Unexecuted instantiation: ieee802_11.c:dl_list_del Unexecuted instantiation: ieee802_11_ht.c:dl_list_del Unexecuted instantiation: ieee802_11_shared.c:dl_list_del Unexecuted instantiation: ieee802_1x.c:dl_list_del Unexecuted instantiation: neighbor_db.c:dl_list_del Unexecuted instantiation: ndisc_snoop.c:dl_list_del Unexecuted instantiation: pmksa_cache_auth.c:dl_list_del Unexecuted instantiation: rrm.c:dl_list_del Unexecuted instantiation: sta_info.c:dl_list_del Unexecuted instantiation: utils.c:dl_list_del Unexecuted instantiation: vlan_init.c:dl_list_del Unexecuted instantiation: wmm.c:dl_list_del Unexecuted instantiation: wpa_auth.c:dl_list_del Unexecuted instantiation: wpa_auth_ft.c:dl_list_del Unexecuted instantiation: wpa_auth_glue.c:dl_list_del Unexecuted instantiation: wpa_auth_ie.c:dl_list_del Unexecuted instantiation: wps_hostapd.c:dl_list_del Unexecuted instantiation: x_snoop.c:dl_list_del Unexecuted instantiation: accounting.c:dl_list_del Unexecuted instantiation: ap_drv_ops.c:dl_list_del Unexecuted instantiation: ap_mlme.c:dl_list_del Unexecuted instantiation: airtime_policy.c:dl_list_del Unexecuted instantiation: authsrv.c:dl_list_del Unexecuted instantiation: bss_load.c:dl_list_del Unexecuted instantiation: dhcp_snoop.c:dl_list_del Unexecuted instantiation: eap_user_db.c:dl_list_del Unexecuted instantiation: eth_p_oui.c:dl_list_del Unexecuted instantiation: gas_serv.c:dl_list_del Unexecuted instantiation: tkip_countermeasures.c:dl_list_del Unexecuted instantiation: eapol_auth_sm.c:dl_list_del Line | Count | Source | 42 | 6.57k | { | 43 | 6.57k | item->next->prev = item->prev; | 44 | 6.57k | item->prev->next = item->next; | 45 | 6.57k | item->next = NULL; | 46 | 6.57k | item->prev = NULL; | 47 | 6.57k | } |
Unexecuted instantiation: hw_features_common.c:dl_list_del Unexecuted instantiation: ieee802_11_common.c:dl_list_del Unexecuted instantiation: ptksa_cache.c:dl_list_del Unexecuted instantiation: wps_registrar.c:dl_list_del Unexecuted instantiation: eap_server.c:dl_list_del Unexecuted instantiation: eap_server_methods.c:dl_list_del |
48 | | |
49 | | static inline int dl_list_empty(const struct dl_list *list) |
50 | 8.76k | { |
51 | 8.76k | return list->next == list; |
52 | 8.76k | } Unexecuted instantiation: driver_common.c:dl_list_empty Unexecuted instantiation: ap-mgmt.c:dl_list_empty ap_config.c:dl_list_empty Line | Count | Source | 50 | 2.19k | { | 51 | 2.19k | return list->next == list; | 52 | 2.19k | } |
Unexecuted instantiation: ap_list.c:dl_list_empty Unexecuted instantiation: beacon.c:dl_list_empty Unexecuted instantiation: dfs.c:dl_list_empty Unexecuted instantiation: hostapd.c:dl_list_empty Unexecuted instantiation: hs20.c:dl_list_empty Unexecuted instantiation: hw_features.c:dl_list_empty Unexecuted instantiation: ieee802_11_auth.c:dl_list_empty Unexecuted instantiation: ieee802_11.c:dl_list_empty Unexecuted instantiation: ieee802_11_ht.c:dl_list_empty Unexecuted instantiation: ieee802_11_shared.c:dl_list_empty Unexecuted instantiation: ieee802_1x.c:dl_list_empty Unexecuted instantiation: neighbor_db.c:dl_list_empty Unexecuted instantiation: ndisc_snoop.c:dl_list_empty Unexecuted instantiation: pmksa_cache_auth.c:dl_list_empty Unexecuted instantiation: rrm.c:dl_list_empty Unexecuted instantiation: sta_info.c:dl_list_empty Unexecuted instantiation: utils.c:dl_list_empty Unexecuted instantiation: vlan_init.c:dl_list_empty Unexecuted instantiation: wmm.c:dl_list_empty Unexecuted instantiation: wpa_auth.c:dl_list_empty Unexecuted instantiation: wpa_auth_ft.c:dl_list_empty Unexecuted instantiation: wpa_auth_glue.c:dl_list_empty Unexecuted instantiation: wpa_auth_ie.c:dl_list_empty Unexecuted instantiation: wps_hostapd.c:dl_list_empty Unexecuted instantiation: x_snoop.c:dl_list_empty Unexecuted instantiation: accounting.c:dl_list_empty Unexecuted instantiation: ap_drv_ops.c:dl_list_empty Unexecuted instantiation: ap_mlme.c:dl_list_empty Unexecuted instantiation: airtime_policy.c:dl_list_empty Unexecuted instantiation: authsrv.c:dl_list_empty Unexecuted instantiation: bss_load.c:dl_list_empty Unexecuted instantiation: dhcp_snoop.c:dl_list_empty Unexecuted instantiation: eap_user_db.c:dl_list_empty Unexecuted instantiation: eth_p_oui.c:dl_list_empty Unexecuted instantiation: gas_serv.c:dl_list_empty Unexecuted instantiation: tkip_countermeasures.c:dl_list_empty Unexecuted instantiation: eapol_auth_sm.c:dl_list_empty Line | Count | Source | 50 | 6.57k | { | 51 | 6.57k | return list->next == list; | 52 | 6.57k | } |
Unexecuted instantiation: hw_features_common.c:dl_list_empty Unexecuted instantiation: ieee802_11_common.c:dl_list_empty Unexecuted instantiation: ptksa_cache.c:dl_list_empty Unexecuted instantiation: wps_registrar.c:dl_list_empty Unexecuted instantiation: eap_server.c:dl_list_empty Unexecuted instantiation: eap_server_methods.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: driver_common.c:dl_list_len Unexecuted instantiation: ap-mgmt.c:dl_list_len Unexecuted instantiation: ap_config.c:dl_list_len Unexecuted instantiation: ap_list.c:dl_list_len Unexecuted instantiation: beacon.c:dl_list_len Unexecuted instantiation: dfs.c:dl_list_len Unexecuted instantiation: hostapd.c:dl_list_len Unexecuted instantiation: hs20.c:dl_list_len Unexecuted instantiation: hw_features.c:dl_list_len Unexecuted instantiation: ieee802_11_auth.c:dl_list_len Unexecuted instantiation: ieee802_11.c:dl_list_len Unexecuted instantiation: ieee802_11_ht.c:dl_list_len Unexecuted instantiation: ieee802_11_shared.c:dl_list_len Unexecuted instantiation: ieee802_1x.c:dl_list_len Unexecuted instantiation: neighbor_db.c:dl_list_len Unexecuted instantiation: ndisc_snoop.c:dl_list_len Unexecuted instantiation: pmksa_cache_auth.c:dl_list_len Unexecuted instantiation: rrm.c:dl_list_len Unexecuted instantiation: sta_info.c:dl_list_len Unexecuted instantiation: utils.c:dl_list_len Unexecuted instantiation: vlan_init.c:dl_list_len Unexecuted instantiation: wmm.c:dl_list_len Unexecuted instantiation: wpa_auth.c:dl_list_len Unexecuted instantiation: wpa_auth_ft.c:dl_list_len Unexecuted instantiation: wpa_auth_glue.c:dl_list_len Unexecuted instantiation: wpa_auth_ie.c:dl_list_len Unexecuted instantiation: wps_hostapd.c:dl_list_len Unexecuted instantiation: x_snoop.c:dl_list_len Unexecuted instantiation: accounting.c:dl_list_len Unexecuted instantiation: ap_drv_ops.c:dl_list_len Unexecuted instantiation: ap_mlme.c:dl_list_len Unexecuted instantiation: airtime_policy.c:dl_list_len Unexecuted instantiation: authsrv.c:dl_list_len Unexecuted instantiation: bss_load.c:dl_list_len Unexecuted instantiation: dhcp_snoop.c:dl_list_len Unexecuted instantiation: eap_user_db.c:dl_list_len Unexecuted instantiation: eth_p_oui.c:dl_list_len Unexecuted instantiation: gas_serv.c:dl_list_len Unexecuted instantiation: tkip_countermeasures.c:dl_list_len Unexecuted instantiation: eapol_auth_sm.c:dl_list_len Unexecuted instantiation: eloop.c:dl_list_len Unexecuted instantiation: hw_features_common.c:dl_list_len Unexecuted instantiation: ieee802_11_common.c:dl_list_len Unexecuted instantiation: ptksa_cache.c:dl_list_len Unexecuted instantiation: wps_registrar.c:dl_list_len Unexecuted instantiation: eap_server.c:dl_list_len Unexecuted instantiation: eap_server_methods.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 | 72.2k | ((type *) ((char *) item - offsetof(type, member))) |
69 | | |
70 | | #define dl_list_first(list, type, member) \ |
71 | 6.57k | (dl_list_empty((list)) ? NULL : \ |
72 | 6.57k | 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 | 6.57k | for (item = dl_list_entry((list)->next, type, member); \ |
80 | 6.57k | &item->member != (list); \ |
81 | 6.57k | item = dl_list_entry(item->member.next, type, member)) |
82 | | |
83 | | #define dl_list_for_each_safe(item, n, list, type, member) \ |
84 | 21.9k | for (item = dl_list_entry((list)->next, type, member), \ |
85 | 21.9k | n = dl_list_entry(item->member.next, type, member); \ |
86 | 39.4k | &item->member != (list); \ |
87 | 21.9k | 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 */ |