Coverage Report

Created: 2026-01-13 06:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/lib/atomlist.h
Line
Count
Source
1
// SPDX-License-Identifier: ISC
2
/*
3
 * Copyright (c) 2016-2019  David Lamparter, for NetDEF, Inc.
4
 */
5
6
#ifndef _FRR_ATOMLIST_H
7
#define _FRR_ATOMLIST_H
8
9
#include "typesafe.h"
10
#include "frratomic.h"
11
12
#ifdef __cplusplus
13
extern "C" {
14
#endif
15
16
/* pointer with lock/deleted/invalid bit in lowest bit
17
 *
18
 * for atomlist/atomsort, "locked" means "this pointer can't be updated, the
19
 * item is being deleted".  it is permissible to assume the item will indeed
20
 * be deleted (as there are no replace/etc. ops in this).
21
 *
22
 * in general, lowest 2/3 bits on 32/64bit architectures are available for
23
 * uses like this; the only thing that will really break this is putting an
24
 * atomlist_item in a struct with "packed" attribute.  (it'll break
25
 * immediately and consistently.) -- don't do that.
26
 *
27
 * ATOMPTR_USER is currently unused (and available for atomic hash or skiplist
28
 * implementations.)
29
 */
30
31
/* atomic_atomptr_t may look a bit odd, it's for the sake of C++ compat */
32
typedef uintptr_t   atomptr_t;
33
typedef atomic_uintptr_t  atomic_atomptr_t;
34
35
5.63k
#define ATOMPTR_MASK (UINTPTR_MAX - 3)
36
16
#define ATOMPTR_LOCK (1)
37
#define ATOMPTR_USER (2)
38
32
#define ATOMPTR_NULL (0)
39
40
static inline atomptr_t atomptr_i(void *val)
41
16
{
42
16
  atomptr_t atomval = (atomptr_t)val;
43
44
16
  assert(!(atomval & ATOMPTR_LOCK));
45
16
  return atomval;
46
16
}
Unexecuted instantiation: ospf_main.c:atomptr_i
Unexecuted instantiation: frr-ospf-route-map.yang.c:atomptr_i
Unexecuted instantiation: ospf_bfd.c:atomptr_i
Unexecuted instantiation: ospf_dump.c:atomptr_i
Unexecuted instantiation: ospf_dump_api.c:atomptr_i
Unexecuted instantiation: ospf_errors.c:atomptr_i
Unexecuted instantiation: ospf_interface.c:atomptr_i
Unexecuted instantiation: ospf_lsa.c:atomptr_i
Unexecuted instantiation: ospf_lsdb.c:atomptr_i
Unexecuted instantiation: ospf_neighbor.c:atomptr_i
Unexecuted instantiation: ospf_network.c:atomptr_i
Unexecuted instantiation: ospf_nsm.c:atomptr_i
Unexecuted instantiation: ospf_opaque.c:atomptr_i
Unexecuted instantiation: ospf_packet.c:atomptr_i
Unexecuted instantiation: ospf_ri.c:atomptr_i
Unexecuted instantiation: ospf_routemap.c:atomptr_i
Unexecuted instantiation: ospf_routemap_nb.c:atomptr_i
Unexecuted instantiation: ospf_routemap_nb_config.c:atomptr_i
Unexecuted instantiation: ospf_spf.c:atomptr_i
Unexecuted instantiation: ospf_ti_lfa.c:atomptr_i
Unexecuted instantiation: ospf_sr.c:atomptr_i
Unexecuted instantiation: ospf_te.c:atomptr_i
Unexecuted instantiation: ospf_vty.c:atomptr_i
Unexecuted instantiation: ospf_zebra.c:atomptr_i
Unexecuted instantiation: ospfd.c:atomptr_i
Unexecuted instantiation: ospf_gr_helper.c:atomptr_i
Unexecuted instantiation: ospf_abr.c:atomptr_i
Unexecuted instantiation: ospf_apiserver.c:atomptr_i
Unexecuted instantiation: ospf_asbr.c:atomptr_i
Unexecuted instantiation: ospf_ase.c:atomptr_i
Unexecuted instantiation: ospf_ext.c:atomptr_i
Unexecuted instantiation: ospf_flood.c:atomptr_i
Unexecuted instantiation: ospf_gr.c:atomptr_i
Unexecuted instantiation: ospf_ia.c:atomptr_i
Unexecuted instantiation: ospf_ism.c:atomptr_i
Unexecuted instantiation: ospf_ldp_sync.c:atomptr_i
Unexecuted instantiation: ospf_route.c:atomptr_i
Unexecuted instantiation: ospf_api.c:atomptr_i
Unexecuted instantiation: affinitymap.c:atomptr_i
Unexecuted instantiation: affinitymap_cli.c:atomptr_i
Unexecuted instantiation: affinitymap_northbound.c:atomptr_i
Unexecuted instantiation: agg_table.c:atomptr_i
atomlist.c:atomptr_i
Line
Count
Source
41
16
{
42
16
  atomptr_t atomval = (atomptr_t)val;
43
44
16
  assert(!(atomval & ATOMPTR_LOCK));
45
16
  return atomval;
46
16
}
Unexecuted instantiation: asn.c:atomptr_i
Unexecuted instantiation: bfd.c:atomptr_i
Unexecuted instantiation: buffer.c:atomptr_i
Unexecuted instantiation: command.c:atomptr_i
Unexecuted instantiation: command_graph.c:atomptr_i
Unexecuted instantiation: command_lex.c:atomptr_i
Unexecuted instantiation: command_match.c:atomptr_i
Unexecuted instantiation: command_parse.c:atomptr_i
Unexecuted instantiation: cspf.c:atomptr_i
Unexecuted instantiation: debug.c:atomptr_i
Unexecuted instantiation: distribute.c:atomptr_i
Unexecuted instantiation: ferr.c:atomptr_i
Unexecuted instantiation: filter.c:atomptr_i
Unexecuted instantiation: filter_cli.c:atomptr_i
Unexecuted instantiation: filter_nb.c:atomptr_i
Unexecuted instantiation: flex_algo.c:atomptr_i
Unexecuted instantiation: frrcu.c:atomptr_i
Unexecuted instantiation: frr_pthread.c:atomptr_i
Unexecuted instantiation: grammar_sandbox.c:atomptr_i
Unexecuted instantiation: hash.c:atomptr_i
Unexecuted instantiation: id_alloc.c:atomptr_i
Unexecuted instantiation: if.c:atomptr_i
Unexecuted instantiation: if_rmap.c:atomptr_i
Unexecuted instantiation: json.c:atomptr_i
Unexecuted instantiation: keychain.c:atomptr_i
Unexecuted instantiation: ldp_sync.c:atomptr_i
Unexecuted instantiation: lib_errors.c:atomptr_i
Unexecuted instantiation: lib_vty.c:atomptr_i
Unexecuted instantiation: libfrr.c:atomptr_i
Unexecuted instantiation: link_state.c:atomptr_i
Unexecuted instantiation: log.c:atomptr_i
Unexecuted instantiation: log_filter.c:atomptr_i
Unexecuted instantiation: log_vty.c:atomptr_i
Unexecuted instantiation: memory.c:atomptr_i
Unexecuted instantiation: mgmt_be_client.c:atomptr_i
Unexecuted instantiation: mgmt_fe_client.c:atomptr_i
Unexecuted instantiation: mgmt_msg.c:atomptr_i
Unexecuted instantiation: mlag.c:atomptr_i
Unexecuted instantiation: srv6.c:atomptr_i
Unexecuted instantiation: network.c:atomptr_i
Unexecuted instantiation: nexthop.c:atomptr_i
Unexecuted instantiation: netns_linux.c:atomptr_i
Unexecuted instantiation: nexthop_group.c:atomptr_i
Unexecuted instantiation: northbound.c:atomptr_i
Unexecuted instantiation: northbound_cli.c:atomptr_i
Unexecuted instantiation: northbound_db.c:atomptr_i
Unexecuted instantiation: pid_output.c:atomptr_i
Unexecuted instantiation: plist.c:atomptr_i
Unexecuted instantiation: prefix.c:atomptr_i
Unexecuted instantiation: privs.c:atomptr_i
Unexecuted instantiation: pullwr.c:atomptr_i
Unexecuted instantiation: qobj.c:atomptr_i
Unexecuted instantiation: routemap.c:atomptr_i
Unexecuted instantiation: routemap_cli.c:atomptr_i
Unexecuted instantiation: routemap_northbound.c:atomptr_i
Unexecuted instantiation: sbuf.c:atomptr_i
Unexecuted instantiation: sigevent.c:atomptr_i
Unexecuted instantiation: skiplist.c:atomptr_i
Unexecuted instantiation: sockopt.c:atomptr_i
Unexecuted instantiation: sockunion.c:atomptr_i
Unexecuted instantiation: spf_backoff.c:atomptr_i
Unexecuted instantiation: srcdest_table.c:atomptr_i
Unexecuted instantiation: stream.c:atomptr_i
Unexecuted instantiation: systemd.c:atomptr_i
Unexecuted instantiation: table.c:atomptr_i
Unexecuted instantiation: termtable.c:atomptr_i
Unexecuted instantiation: event.c:atomptr_i
Unexecuted instantiation: vrf.c:atomptr_i
Unexecuted instantiation: vty.c:atomptr_i
Unexecuted instantiation: wheel.c:atomptr_i
Unexecuted instantiation: workqueue.c:atomptr_i
Unexecuted instantiation: xref.c:atomptr_i
Unexecuted instantiation: yang.c:atomptr_i
Unexecuted instantiation: yang_translator.c:atomptr_i
Unexecuted instantiation: yang_wrappers.c:atomptr_i
Unexecuted instantiation: zclient.c:atomptr_i
Unexecuted instantiation: zlog.c:atomptr_i
Unexecuted instantiation: zlog_5424.c:atomptr_i
Unexecuted instantiation: zlog_5424_cli.c:atomptr_i
Unexecuted instantiation: zlog_live.c:atomptr_i
Unexecuted instantiation: zlog_targets.c:atomptr_i
Unexecuted instantiation: routing_nb.c:atomptr_i
Unexecuted instantiation: routing_nb_config.c:atomptr_i
Unexecuted instantiation: tc.c:atomptr_i
Unexecuted instantiation: frr-affinity-map.yang.c:atomptr_i
Unexecuted instantiation: frr-filter.yang.c:atomptr_i
Unexecuted instantiation: frr-if-rmap.yang.c:atomptr_i
Unexecuted instantiation: frr-interface.yang.c:atomptr_i
Unexecuted instantiation: frr-route-map.yang.c:atomptr_i
Unexecuted instantiation: frr-route-types.yang.c:atomptr_i
Unexecuted instantiation: frr-vrf.yang.c:atomptr_i
Unexecuted instantiation: frr-routing.yang.c:atomptr_i
Unexecuted instantiation: frr-nexthop.yang.c:atomptr_i
Unexecuted instantiation: ietf-routing-types.yang.c:atomptr_i
Unexecuted instantiation: ietf-interfaces.yang.c:atomptr_i
Unexecuted instantiation: ietf-bgp-types.yang.c:atomptr_i
Unexecuted instantiation: frr-module-translator.yang.c:atomptr_i
Unexecuted instantiation: connected.c:atomptr_i
Unexecuted instantiation: if_netlink.c:atomptr_i
Unexecuted instantiation: interface.c:atomptr_i
Unexecuted instantiation: ioctl.c:atomptr_i
Unexecuted instantiation: ipforward_proc.c:atomptr_i
Unexecuted instantiation: kernel_netlink.c:atomptr_i
Unexecuted instantiation: label_manager.c:atomptr_i
Unexecuted instantiation: main.c:atomptr_i
Unexecuted instantiation: netconf_netlink.c:atomptr_i
Unexecuted instantiation: redistribute.c:atomptr_i
Unexecuted instantiation: router-id.c:atomptr_i
Unexecuted instantiation: rt_netlink.c:atomptr_i
Unexecuted instantiation: rtadv.c:atomptr_i
Unexecuted instantiation: rtread_netlink.c:atomptr_i
Unexecuted instantiation: rule_netlink.c:atomptr_i
Unexecuted instantiation: table_manager.c:atomptr_i
Unexecuted instantiation: tc_netlink.c:atomptr_i
Unexecuted instantiation: zapi_msg.c:atomptr_i
Unexecuted instantiation: zebra_affinitymap.c:atomptr_i
Unexecuted instantiation: zebra_dplane.c:atomptr_i
Unexecuted instantiation: zebra_errors.c:atomptr_i
Unexecuted instantiation: zebra_gr.c:atomptr_i
Unexecuted instantiation: zebra_l2.c:atomptr_i
Unexecuted instantiation: zebra_l2_bridge_if.c:atomptr_i
Unexecuted instantiation: zebra_evpn.c:atomptr_i
Unexecuted instantiation: zebra_evpn_mac.c:atomptr_i
Unexecuted instantiation: zebra_evpn_neigh.c:atomptr_i
Unexecuted instantiation: zebra_mlag.c:atomptr_i
Unexecuted instantiation: zebra_mlag_vty.c:atomptr_i
Unexecuted instantiation: zebra_mpls.c:atomptr_i
Unexecuted instantiation: zebra_mpls_netlink.c:atomptr_i
Unexecuted instantiation: zebra_mpls_null.c:atomptr_i
Unexecuted instantiation: zebra_mpls_vty.c:atomptr_i
Unexecuted instantiation: zebra_srv6.c:atomptr_i
Unexecuted instantiation: zebra_srv6_vty.c:atomptr_i
Unexecuted instantiation: zebra_mroute.c:atomptr_i
Unexecuted instantiation: zebra_nb.c:atomptr_i
Unexecuted instantiation: zebra_nb_config.c:atomptr_i
Unexecuted instantiation: zebra_nb_rpcs.c:atomptr_i
Unexecuted instantiation: zebra_nb_state.c:atomptr_i
Unexecuted instantiation: zebra_netns_id.c:atomptr_i
Unexecuted instantiation: zebra_netns_notify.c:atomptr_i
Unexecuted instantiation: zebra_nhg.c:atomptr_i
Unexecuted instantiation: zebra_ns.c:atomptr_i
Unexecuted instantiation: zebra_opaque.c:atomptr_i
Unexecuted instantiation: zebra_pbr.c:atomptr_i
Unexecuted instantiation: zebra_ptm.c:atomptr_i
Unexecuted instantiation: zebra_ptm_redistribute.c:atomptr_i
Unexecuted instantiation: zebra_pw.c:atomptr_i
Unexecuted instantiation: zebra_rib.c:atomptr_i
Unexecuted instantiation: zebra_router.c:atomptr_i
Unexecuted instantiation: zebra_rnh.c:atomptr_i
Unexecuted instantiation: zebra_routemap.c:atomptr_i
Unexecuted instantiation: zebra_routemap_nb.c:atomptr_i
Unexecuted instantiation: zebra_routemap_nb_config.c:atomptr_i
Unexecuted instantiation: zebra_script.c:atomptr_i
Unexecuted instantiation: zebra_srte.c:atomptr_i
Unexecuted instantiation: zebra_tc.c:atomptr_i
Unexecuted instantiation: zebra_vrf.c:atomptr_i
Unexecuted instantiation: zebra_vty.c:atomptr_i
Unexecuted instantiation: zebra_vxlan.c:atomptr_i
Unexecuted instantiation: zebra_vxlan_if.c:atomptr_i
Unexecuted instantiation: zebra_evpn_mh.c:atomptr_i
Unexecuted instantiation: zebra_neigh.c:atomptr_i
Unexecuted instantiation: zserv.c:atomptr_i
Unexecuted instantiation: debug_nl.c:atomptr_i
Unexecuted instantiation: frr-zebra.yang.c:atomptr_i
Unexecuted instantiation: frr-zebra-route-map.yang.c:atomptr_i
Unexecuted instantiation: bgp_main.c:atomptr_i
Unexecuted instantiation: frr-bgp-types.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-common-structure.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-common.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-neighbor.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-peer-group.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-bmp.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-rpki.yang.c:atomptr_i
Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-filter.yang.c:atomptr_i
Unexecuted instantiation: frr-bgp-route-map.yang.c:atomptr_i
Unexecuted instantiation: bgp_attr.c:atomptr_i
Unexecuted instantiation: bgp_attr_evpn.c:atomptr_i
Unexecuted instantiation: bgp_clist.c:atomptr_i
Unexecuted instantiation: bgp_community.c:atomptr_i
Unexecuted instantiation: bgp_community_alias.c:atomptr_i
Unexecuted instantiation: bgp_debug.c:atomptr_i
Unexecuted instantiation: bgp_dump.c:atomptr_i
Unexecuted instantiation: bgp_ecommunity.c:atomptr_i
Unexecuted instantiation: bgp_errors.c:atomptr_i
Unexecuted instantiation: bgp_evpn.c:atomptr_i
Unexecuted instantiation: bgp_evpn_mh.c:atomptr_i
Unexecuted instantiation: bgp_evpn_vty.c:atomptr_i
Unexecuted instantiation: bgp_filter.c:atomptr_i
Unexecuted instantiation: bgp_flowspec_vty.c:atomptr_i
Unexecuted instantiation: bgp_fsm.c:atomptr_i
Unexecuted instantiation: bgp_io.c:atomptr_i
Unexecuted instantiation: bgp_keepalives.c:atomptr_i
Unexecuted instantiation: bgp_labelpool.c:atomptr_i
Unexecuted instantiation: bgp_lcommunity.c:atomptr_i
Unexecuted instantiation: bgp_mac.c:atomptr_i
Unexecuted instantiation: bgp_mpath.c:atomptr_i
Unexecuted instantiation: bgp_mplsvpn.c:atomptr_i
Unexecuted instantiation: bgp_network.c:atomptr_i
Unexecuted instantiation: bgp_nexthop.c:atomptr_i
Unexecuted instantiation: bgp_nht.c:atomptr_i
Unexecuted instantiation: bgp_packet.c:atomptr_i
Unexecuted instantiation: bgp_pbr.c:atomptr_i
Unexecuted instantiation: bgp_rd.c:atomptr_i
Unexecuted instantiation: bgp_regex.c:atomptr_i
Unexecuted instantiation: bgp_route.c:atomptr_i
Unexecuted instantiation: bgp_routemap.c:atomptr_i
Unexecuted instantiation: bgp_routemap_nb.c:atomptr_i
Unexecuted instantiation: bgp_routemap_nb_config.c:atomptr_i
Unexecuted instantiation: bgp_table.c:atomptr_i
Unexecuted instantiation: bgp_updgrp.c:atomptr_i
Unexecuted instantiation: bgp_updgrp_adv.c:atomptr_i
Unexecuted instantiation: bgp_updgrp_packet.c:atomptr_i
Unexecuted instantiation: bgp_vpn.c:atomptr_i
Unexecuted instantiation: bgp_vty.c:atomptr_i
Unexecuted instantiation: bgp_zebra.c:atomptr_i
Unexecuted instantiation: bgpd.c:atomptr_i
Unexecuted instantiation: bgp_rfapi_cfg.c:atomptr_i
Unexecuted instantiation: rfapi_import.c:atomptr_i
Unexecuted instantiation: rfapi.c:atomptr_i
Unexecuted instantiation: rfapi_ap.c:atomptr_i
Unexecuted instantiation: rfapi_encap_tlv.c:atomptr_i
Unexecuted instantiation: rfapi_nve_addr.c:atomptr_i
Unexecuted instantiation: rfapi_monitor.c:atomptr_i
Unexecuted instantiation: rfapi_rib.c:atomptr_i
Unexecuted instantiation: rfapi_vty.c:atomptr_i
Unexecuted instantiation: vnc_debug.c:atomptr_i
Unexecuted instantiation: vnc_export_bgp.c:atomptr_i
Unexecuted instantiation: vnc_export_table.c:atomptr_i
Unexecuted instantiation: vnc_import_bgp.c:atomptr_i
Unexecuted instantiation: vnc_zebra.c:atomptr_i
Unexecuted instantiation: bgp_addpath.c:atomptr_i
Unexecuted instantiation: bgp_advertise.c:atomptr_i
Unexecuted instantiation: bgp_aspath.c:atomptr_i
Unexecuted instantiation: bgp_bfd.c:atomptr_i
Unexecuted instantiation: bgp_conditional_adv.c:atomptr_i
Unexecuted instantiation: bgp_damp.c:atomptr_i
Unexecuted instantiation: bgp_encap_tlv.c:atomptr_i
Unexecuted instantiation: bgp_flowspec.c:atomptr_i
Unexecuted instantiation: bgp_flowspec_util.c:atomptr_i
Unexecuted instantiation: bgp_label.c:atomptr_i
Unexecuted instantiation: bgp_open.c:atomptr_i
Unexecuted instantiation: rfp_example.c:atomptr_i
Unexecuted instantiation: pim_addr.c:atomptr_i
Unexecuted instantiation: pim_assert.c:atomptr_i
Unexecuted instantiation: pim_bfd.c:atomptr_i
Unexecuted instantiation: pim_bsm.c:atomptr_i
Unexecuted instantiation: pim_cmd_common.c:atomptr_i
Unexecuted instantiation: pim_errors.c:atomptr_i
Unexecuted instantiation: pim_hello.c:atomptr_i
Unexecuted instantiation: pim_iface.c:atomptr_i
Unexecuted instantiation: pim_ifchannel.c:atomptr_i
Unexecuted instantiation: pim_instance.c:atomptr_i
Unexecuted instantiation: pim_join.c:atomptr_i
Unexecuted instantiation: pim_jp_agg.c:atomptr_i
Unexecuted instantiation: pim_macro.c:atomptr_i
Unexecuted instantiation: pim_mroute.c:atomptr_i
Unexecuted instantiation: pim_msg.c:atomptr_i
Unexecuted instantiation: pim_nb.c:atomptr_i
Unexecuted instantiation: pim_nb_config.c:atomptr_i
Unexecuted instantiation: pim_neighbor.c:atomptr_i
Unexecuted instantiation: pim_nht.c:atomptr_i
Unexecuted instantiation: pim_oil.c:atomptr_i
Unexecuted instantiation: pim_pim.c:atomptr_i
Unexecuted instantiation: pim_routemap.c:atomptr_i
Unexecuted instantiation: pim_rp.c:atomptr_i
Unexecuted instantiation: pim_rpf.c:atomptr_i
Unexecuted instantiation: pim_sock.c:atomptr_i
Unexecuted instantiation: pim_ssm.c:atomptr_i
Unexecuted instantiation: pim_ssmpingd.c:atomptr_i
Unexecuted instantiation: pim_static.c:atomptr_i
Unexecuted instantiation: pim_str.c:atomptr_i
Unexecuted instantiation: pim_tib.c:atomptr_i
Unexecuted instantiation: pim_time.c:atomptr_i
Unexecuted instantiation: pim_tlv.c:atomptr_i
Unexecuted instantiation: pim_upstream.c:atomptr_i
Unexecuted instantiation: pim_util.c:atomptr_i
Unexecuted instantiation: pim_vty.c:atomptr_i
Unexecuted instantiation: pim_zebra.c:atomptr_i
Unexecuted instantiation: pim_zlookup.c:atomptr_i
Unexecuted instantiation: pim_vxlan.c:atomptr_i
Unexecuted instantiation: pim_register.c:atomptr_i
Unexecuted instantiation: pimd.c:atomptr_i
Unexecuted instantiation: pim_cmd.c:atomptr_i
Unexecuted instantiation: pim_igmp.c:atomptr_i
Unexecuted instantiation: pim_igmp_mtrace.c:atomptr_i
Unexecuted instantiation: pim_igmpv2.c:atomptr_i
Unexecuted instantiation: pim_igmpv3.c:atomptr_i
Unexecuted instantiation: pim_main.c:atomptr_i
Unexecuted instantiation: pim_mlag.c:atomptr_i
Unexecuted instantiation: pim_msdp.c:atomptr_i
Unexecuted instantiation: pim_msdp_packet.c:atomptr_i
Unexecuted instantiation: pim_msdp_socket.c:atomptr_i
Unexecuted instantiation: pim_signals.c:atomptr_i
Unexecuted instantiation: pim_zpthread.c:atomptr_i
Unexecuted instantiation: frr-pim.yang.c:atomptr_i
Unexecuted instantiation: frr-pim-rp.yang.c:atomptr_i
Unexecuted instantiation: frr-gmp.yang.c:atomptr_i
47
static inline void *atomptr_p(atomptr_t val)
48
5.63k
{
49
5.63k
  return (void *)(val & ATOMPTR_MASK);
50
5.63k
}
Unexecuted instantiation: ospf_main.c:atomptr_p
Unexecuted instantiation: frr-ospf-route-map.yang.c:atomptr_p
Unexecuted instantiation: ospf_bfd.c:atomptr_p
Unexecuted instantiation: ospf_dump.c:atomptr_p
Unexecuted instantiation: ospf_dump_api.c:atomptr_p
Unexecuted instantiation: ospf_errors.c:atomptr_p
Unexecuted instantiation: ospf_interface.c:atomptr_p
Unexecuted instantiation: ospf_lsa.c:atomptr_p
Unexecuted instantiation: ospf_lsdb.c:atomptr_p
Unexecuted instantiation: ospf_neighbor.c:atomptr_p
Unexecuted instantiation: ospf_network.c:atomptr_p
Unexecuted instantiation: ospf_nsm.c:atomptr_p
Unexecuted instantiation: ospf_opaque.c:atomptr_p
Unexecuted instantiation: ospf_packet.c:atomptr_p
Unexecuted instantiation: ospf_ri.c:atomptr_p
Unexecuted instantiation: ospf_routemap.c:atomptr_p
Unexecuted instantiation: ospf_routemap_nb.c:atomptr_p
Unexecuted instantiation: ospf_routemap_nb_config.c:atomptr_p
Unexecuted instantiation: ospf_spf.c:atomptr_p
Unexecuted instantiation: ospf_ti_lfa.c:atomptr_p
Unexecuted instantiation: ospf_sr.c:atomptr_p
Unexecuted instantiation: ospf_te.c:atomptr_p
Unexecuted instantiation: ospf_vty.c:atomptr_p
Unexecuted instantiation: ospf_zebra.c:atomptr_p
Unexecuted instantiation: ospfd.c:atomptr_p
Unexecuted instantiation: ospf_gr_helper.c:atomptr_p
Unexecuted instantiation: ospf_abr.c:atomptr_p
Unexecuted instantiation: ospf_apiserver.c:atomptr_p
Unexecuted instantiation: ospf_asbr.c:atomptr_p
Unexecuted instantiation: ospf_ase.c:atomptr_p
Unexecuted instantiation: ospf_ext.c:atomptr_p
Unexecuted instantiation: ospf_flood.c:atomptr_p
Unexecuted instantiation: ospf_gr.c:atomptr_p
Unexecuted instantiation: ospf_ia.c:atomptr_p
Unexecuted instantiation: ospf_ism.c:atomptr_p
Unexecuted instantiation: ospf_ldp_sync.c:atomptr_p
Unexecuted instantiation: ospf_route.c:atomptr_p
Unexecuted instantiation: ospf_api.c:atomptr_p
Unexecuted instantiation: affinitymap.c:atomptr_p
Unexecuted instantiation: affinitymap_cli.c:atomptr_p
Unexecuted instantiation: affinitymap_northbound.c:atomptr_p
Unexecuted instantiation: agg_table.c:atomptr_p
atomlist.c:atomptr_p
Line
Count
Source
48
32
{
49
  return (void *)(val & ATOMPTR_MASK);
50
32
}
Unexecuted instantiation: asn.c:atomptr_p
Unexecuted instantiation: bfd.c:atomptr_p
Unexecuted instantiation: buffer.c:atomptr_p
Unexecuted instantiation: command.c:atomptr_p
Unexecuted instantiation: command_graph.c:atomptr_p
Unexecuted instantiation: command_lex.c:atomptr_p
Unexecuted instantiation: command_match.c:atomptr_p
Unexecuted instantiation: command_parse.c:atomptr_p
Unexecuted instantiation: cspf.c:atomptr_p
Unexecuted instantiation: debug.c:atomptr_p
Unexecuted instantiation: distribute.c:atomptr_p
Unexecuted instantiation: ferr.c:atomptr_p
Unexecuted instantiation: filter.c:atomptr_p
Unexecuted instantiation: filter_cli.c:atomptr_p
Unexecuted instantiation: filter_nb.c:atomptr_p
Unexecuted instantiation: flex_algo.c:atomptr_p
Unexecuted instantiation: frrcu.c:atomptr_p
Unexecuted instantiation: frr_pthread.c:atomptr_p
Unexecuted instantiation: grammar_sandbox.c:atomptr_p
Unexecuted instantiation: hash.c:atomptr_p
Unexecuted instantiation: id_alloc.c:atomptr_p
Unexecuted instantiation: if.c:atomptr_p
Unexecuted instantiation: if_rmap.c:atomptr_p
Unexecuted instantiation: json.c:atomptr_p
Unexecuted instantiation: keychain.c:atomptr_p
Unexecuted instantiation: ldp_sync.c:atomptr_p
Unexecuted instantiation: lib_errors.c:atomptr_p
Unexecuted instantiation: lib_vty.c:atomptr_p
Unexecuted instantiation: libfrr.c:atomptr_p
Unexecuted instantiation: link_state.c:atomptr_p
Unexecuted instantiation: log.c:atomptr_p
Unexecuted instantiation: log_filter.c:atomptr_p
Unexecuted instantiation: log_vty.c:atomptr_p
Unexecuted instantiation: memory.c:atomptr_p
Unexecuted instantiation: mgmt_be_client.c:atomptr_p
Unexecuted instantiation: mgmt_fe_client.c:atomptr_p
Unexecuted instantiation: mgmt_msg.c:atomptr_p
Unexecuted instantiation: mlag.c:atomptr_p
Unexecuted instantiation: srv6.c:atomptr_p
Unexecuted instantiation: network.c:atomptr_p
Unexecuted instantiation: nexthop.c:atomptr_p
Unexecuted instantiation: netns_linux.c:atomptr_p
Unexecuted instantiation: nexthop_group.c:atomptr_p
Unexecuted instantiation: northbound.c:atomptr_p
Unexecuted instantiation: northbound_cli.c:atomptr_p
Unexecuted instantiation: northbound_db.c:atomptr_p
Unexecuted instantiation: pid_output.c:atomptr_p
Unexecuted instantiation: plist.c:atomptr_p
Unexecuted instantiation: prefix.c:atomptr_p
Unexecuted instantiation: privs.c:atomptr_p
Unexecuted instantiation: pullwr.c:atomptr_p
Unexecuted instantiation: qobj.c:atomptr_p
Unexecuted instantiation: routemap.c:atomptr_p
Unexecuted instantiation: routemap_cli.c:atomptr_p
Unexecuted instantiation: routemap_northbound.c:atomptr_p
Unexecuted instantiation: sbuf.c:atomptr_p
Unexecuted instantiation: sigevent.c:atomptr_p
Unexecuted instantiation: skiplist.c:atomptr_p
Unexecuted instantiation: sockopt.c:atomptr_p
Unexecuted instantiation: sockunion.c:atomptr_p
Unexecuted instantiation: spf_backoff.c:atomptr_p
Unexecuted instantiation: srcdest_table.c:atomptr_p
Unexecuted instantiation: stream.c:atomptr_p
Unexecuted instantiation: systemd.c:atomptr_p
Unexecuted instantiation: table.c:atomptr_p
Unexecuted instantiation: termtable.c:atomptr_p
Unexecuted instantiation: event.c:atomptr_p
Unexecuted instantiation: vrf.c:atomptr_p
Unexecuted instantiation: vty.c:atomptr_p
Unexecuted instantiation: wheel.c:atomptr_p
Unexecuted instantiation: workqueue.c:atomptr_p
Unexecuted instantiation: xref.c:atomptr_p
Unexecuted instantiation: yang.c:atomptr_p
Unexecuted instantiation: yang_translator.c:atomptr_p
Unexecuted instantiation: yang_wrappers.c:atomptr_p
Unexecuted instantiation: zclient.c:atomptr_p
zlog.c:atomptr_p
Line
Count
Source
48
5.60k
{
49
  return (void *)(val & ATOMPTR_MASK);
50
5.60k
}
Unexecuted instantiation: zlog_5424.c:atomptr_p
Unexecuted instantiation: zlog_5424_cli.c:atomptr_p
Unexecuted instantiation: zlog_live.c:atomptr_p
Unexecuted instantiation: zlog_targets.c:atomptr_p
Unexecuted instantiation: routing_nb.c:atomptr_p
Unexecuted instantiation: routing_nb_config.c:atomptr_p
Unexecuted instantiation: tc.c:atomptr_p
Unexecuted instantiation: frr-affinity-map.yang.c:atomptr_p
Unexecuted instantiation: frr-filter.yang.c:atomptr_p
Unexecuted instantiation: frr-if-rmap.yang.c:atomptr_p
Unexecuted instantiation: frr-interface.yang.c:atomptr_p
Unexecuted instantiation: frr-route-map.yang.c:atomptr_p
Unexecuted instantiation: frr-route-types.yang.c:atomptr_p
Unexecuted instantiation: frr-vrf.yang.c:atomptr_p
Unexecuted instantiation: frr-routing.yang.c:atomptr_p
Unexecuted instantiation: frr-nexthop.yang.c:atomptr_p
Unexecuted instantiation: ietf-routing-types.yang.c:atomptr_p
Unexecuted instantiation: ietf-interfaces.yang.c:atomptr_p
Unexecuted instantiation: ietf-bgp-types.yang.c:atomptr_p
Unexecuted instantiation: frr-module-translator.yang.c:atomptr_p
Unexecuted instantiation: connected.c:atomptr_p
Unexecuted instantiation: if_netlink.c:atomptr_p
Unexecuted instantiation: interface.c:atomptr_p
Unexecuted instantiation: ioctl.c:atomptr_p
Unexecuted instantiation: ipforward_proc.c:atomptr_p
Unexecuted instantiation: kernel_netlink.c:atomptr_p
Unexecuted instantiation: label_manager.c:atomptr_p
Unexecuted instantiation: main.c:atomptr_p
Unexecuted instantiation: netconf_netlink.c:atomptr_p
Unexecuted instantiation: redistribute.c:atomptr_p
Unexecuted instantiation: router-id.c:atomptr_p
Unexecuted instantiation: rt_netlink.c:atomptr_p
Unexecuted instantiation: rtadv.c:atomptr_p
Unexecuted instantiation: rtread_netlink.c:atomptr_p
Unexecuted instantiation: rule_netlink.c:atomptr_p
Unexecuted instantiation: table_manager.c:atomptr_p
Unexecuted instantiation: tc_netlink.c:atomptr_p
Unexecuted instantiation: zapi_msg.c:atomptr_p
Unexecuted instantiation: zebra_affinitymap.c:atomptr_p
Unexecuted instantiation: zebra_dplane.c:atomptr_p
Unexecuted instantiation: zebra_errors.c:atomptr_p
Unexecuted instantiation: zebra_gr.c:atomptr_p
Unexecuted instantiation: zebra_l2.c:atomptr_p
Unexecuted instantiation: zebra_l2_bridge_if.c:atomptr_p
Unexecuted instantiation: zebra_evpn.c:atomptr_p
Unexecuted instantiation: zebra_evpn_mac.c:atomptr_p
Unexecuted instantiation: zebra_evpn_neigh.c:atomptr_p
Unexecuted instantiation: zebra_mlag.c:atomptr_p
Unexecuted instantiation: zebra_mlag_vty.c:atomptr_p
Unexecuted instantiation: zebra_mpls.c:atomptr_p
Unexecuted instantiation: zebra_mpls_netlink.c:atomptr_p
Unexecuted instantiation: zebra_mpls_null.c:atomptr_p
Unexecuted instantiation: zebra_mpls_vty.c:atomptr_p
Unexecuted instantiation: zebra_srv6.c:atomptr_p
Unexecuted instantiation: zebra_srv6_vty.c:atomptr_p
Unexecuted instantiation: zebra_mroute.c:atomptr_p
Unexecuted instantiation: zebra_nb.c:atomptr_p
Unexecuted instantiation: zebra_nb_config.c:atomptr_p
Unexecuted instantiation: zebra_nb_rpcs.c:atomptr_p
Unexecuted instantiation: zebra_nb_state.c:atomptr_p
Unexecuted instantiation: zebra_netns_id.c:atomptr_p
Unexecuted instantiation: zebra_netns_notify.c:atomptr_p
Unexecuted instantiation: zebra_nhg.c:atomptr_p
Unexecuted instantiation: zebra_ns.c:atomptr_p
Unexecuted instantiation: zebra_opaque.c:atomptr_p
Unexecuted instantiation: zebra_pbr.c:atomptr_p
Unexecuted instantiation: zebra_ptm.c:atomptr_p
Unexecuted instantiation: zebra_ptm_redistribute.c:atomptr_p
Unexecuted instantiation: zebra_pw.c:atomptr_p
Unexecuted instantiation: zebra_rib.c:atomptr_p
Unexecuted instantiation: zebra_router.c:atomptr_p
Unexecuted instantiation: zebra_rnh.c:atomptr_p
Unexecuted instantiation: zebra_routemap.c:atomptr_p
Unexecuted instantiation: zebra_routemap_nb.c:atomptr_p
Unexecuted instantiation: zebra_routemap_nb_config.c:atomptr_p
Unexecuted instantiation: zebra_script.c:atomptr_p
Unexecuted instantiation: zebra_srte.c:atomptr_p
Unexecuted instantiation: zebra_tc.c:atomptr_p
Unexecuted instantiation: zebra_vrf.c:atomptr_p
Unexecuted instantiation: zebra_vty.c:atomptr_p
Unexecuted instantiation: zebra_vxlan.c:atomptr_p
Unexecuted instantiation: zebra_vxlan_if.c:atomptr_p
Unexecuted instantiation: zebra_evpn_mh.c:atomptr_p
Unexecuted instantiation: zebra_neigh.c:atomptr_p
Unexecuted instantiation: zserv.c:atomptr_p
Unexecuted instantiation: debug_nl.c:atomptr_p
Unexecuted instantiation: frr-zebra.yang.c:atomptr_p
Unexecuted instantiation: frr-zebra-route-map.yang.c:atomptr_p
Unexecuted instantiation: bgp_main.c:atomptr_p
Unexecuted instantiation: frr-bgp-types.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-common-structure.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-common.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-neighbor.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-peer-group.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-bmp.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-rpki.yang.c:atomptr_p
Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-filter.yang.c:atomptr_p
Unexecuted instantiation: frr-bgp-route-map.yang.c:atomptr_p
Unexecuted instantiation: bgp_attr.c:atomptr_p
Unexecuted instantiation: bgp_attr_evpn.c:atomptr_p
Unexecuted instantiation: bgp_clist.c:atomptr_p
Unexecuted instantiation: bgp_community.c:atomptr_p
Unexecuted instantiation: bgp_community_alias.c:atomptr_p
Unexecuted instantiation: bgp_debug.c:atomptr_p
Unexecuted instantiation: bgp_dump.c:atomptr_p
Unexecuted instantiation: bgp_ecommunity.c:atomptr_p
Unexecuted instantiation: bgp_errors.c:atomptr_p
Unexecuted instantiation: bgp_evpn.c:atomptr_p
Unexecuted instantiation: bgp_evpn_mh.c:atomptr_p
Unexecuted instantiation: bgp_evpn_vty.c:atomptr_p
Unexecuted instantiation: bgp_filter.c:atomptr_p
Unexecuted instantiation: bgp_flowspec_vty.c:atomptr_p
Unexecuted instantiation: bgp_fsm.c:atomptr_p
Unexecuted instantiation: bgp_io.c:atomptr_p
Unexecuted instantiation: bgp_keepalives.c:atomptr_p
Unexecuted instantiation: bgp_labelpool.c:atomptr_p
Unexecuted instantiation: bgp_lcommunity.c:atomptr_p
Unexecuted instantiation: bgp_mac.c:atomptr_p
Unexecuted instantiation: bgp_mpath.c:atomptr_p
Unexecuted instantiation: bgp_mplsvpn.c:atomptr_p
Unexecuted instantiation: bgp_network.c:atomptr_p
Unexecuted instantiation: bgp_nexthop.c:atomptr_p
Unexecuted instantiation: bgp_nht.c:atomptr_p
Unexecuted instantiation: bgp_packet.c:atomptr_p
Unexecuted instantiation: bgp_pbr.c:atomptr_p
Unexecuted instantiation: bgp_rd.c:atomptr_p
Unexecuted instantiation: bgp_regex.c:atomptr_p
Unexecuted instantiation: bgp_route.c:atomptr_p
Unexecuted instantiation: bgp_routemap.c:atomptr_p
Unexecuted instantiation: bgp_routemap_nb.c:atomptr_p
Unexecuted instantiation: bgp_routemap_nb_config.c:atomptr_p
Unexecuted instantiation: bgp_table.c:atomptr_p
Unexecuted instantiation: bgp_updgrp.c:atomptr_p
Unexecuted instantiation: bgp_updgrp_adv.c:atomptr_p
Unexecuted instantiation: bgp_updgrp_packet.c:atomptr_p
Unexecuted instantiation: bgp_vpn.c:atomptr_p
Unexecuted instantiation: bgp_vty.c:atomptr_p
Unexecuted instantiation: bgp_zebra.c:atomptr_p
Unexecuted instantiation: bgpd.c:atomptr_p
Unexecuted instantiation: bgp_rfapi_cfg.c:atomptr_p
Unexecuted instantiation: rfapi_import.c:atomptr_p
Unexecuted instantiation: rfapi.c:atomptr_p
Unexecuted instantiation: rfapi_ap.c:atomptr_p
Unexecuted instantiation: rfapi_encap_tlv.c:atomptr_p
Unexecuted instantiation: rfapi_nve_addr.c:atomptr_p
Unexecuted instantiation: rfapi_monitor.c:atomptr_p
Unexecuted instantiation: rfapi_rib.c:atomptr_p
Unexecuted instantiation: rfapi_vty.c:atomptr_p
Unexecuted instantiation: vnc_debug.c:atomptr_p
Unexecuted instantiation: vnc_export_bgp.c:atomptr_p
Unexecuted instantiation: vnc_export_table.c:atomptr_p
Unexecuted instantiation: vnc_import_bgp.c:atomptr_p
Unexecuted instantiation: vnc_zebra.c:atomptr_p
Unexecuted instantiation: bgp_addpath.c:atomptr_p
Unexecuted instantiation: bgp_advertise.c:atomptr_p
Unexecuted instantiation: bgp_aspath.c:atomptr_p
Unexecuted instantiation: bgp_bfd.c:atomptr_p
Unexecuted instantiation: bgp_conditional_adv.c:atomptr_p
Unexecuted instantiation: bgp_damp.c:atomptr_p
Unexecuted instantiation: bgp_encap_tlv.c:atomptr_p
Unexecuted instantiation: bgp_flowspec.c:atomptr_p
Unexecuted instantiation: bgp_flowspec_util.c:atomptr_p
Unexecuted instantiation: bgp_label.c:atomptr_p
Unexecuted instantiation: bgp_open.c:atomptr_p
Unexecuted instantiation: rfp_example.c:atomptr_p
Unexecuted instantiation: pim_addr.c:atomptr_p
Unexecuted instantiation: pim_assert.c:atomptr_p
Unexecuted instantiation: pim_bfd.c:atomptr_p
Unexecuted instantiation: pim_bsm.c:atomptr_p
Unexecuted instantiation: pim_cmd_common.c:atomptr_p
Unexecuted instantiation: pim_errors.c:atomptr_p
Unexecuted instantiation: pim_hello.c:atomptr_p
Unexecuted instantiation: pim_iface.c:atomptr_p
Unexecuted instantiation: pim_ifchannel.c:atomptr_p
Unexecuted instantiation: pim_instance.c:atomptr_p
Unexecuted instantiation: pim_join.c:atomptr_p
Unexecuted instantiation: pim_jp_agg.c:atomptr_p
Unexecuted instantiation: pim_macro.c:atomptr_p
Unexecuted instantiation: pim_mroute.c:atomptr_p
Unexecuted instantiation: pim_msg.c:atomptr_p
Unexecuted instantiation: pim_nb.c:atomptr_p
Unexecuted instantiation: pim_nb_config.c:atomptr_p
Unexecuted instantiation: pim_neighbor.c:atomptr_p
Unexecuted instantiation: pim_nht.c:atomptr_p
Unexecuted instantiation: pim_oil.c:atomptr_p
Unexecuted instantiation: pim_pim.c:atomptr_p
Unexecuted instantiation: pim_routemap.c:atomptr_p
Unexecuted instantiation: pim_rp.c:atomptr_p
Unexecuted instantiation: pim_rpf.c:atomptr_p
Unexecuted instantiation: pim_sock.c:atomptr_p
Unexecuted instantiation: pim_ssm.c:atomptr_p
Unexecuted instantiation: pim_ssmpingd.c:atomptr_p
Unexecuted instantiation: pim_static.c:atomptr_p
Unexecuted instantiation: pim_str.c:atomptr_p
Unexecuted instantiation: pim_tib.c:atomptr_p
Unexecuted instantiation: pim_time.c:atomptr_p
Unexecuted instantiation: pim_tlv.c:atomptr_p
Unexecuted instantiation: pim_upstream.c:atomptr_p
Unexecuted instantiation: pim_util.c:atomptr_p
Unexecuted instantiation: pim_vty.c:atomptr_p
Unexecuted instantiation: pim_zebra.c:atomptr_p
Unexecuted instantiation: pim_zlookup.c:atomptr_p
Unexecuted instantiation: pim_vxlan.c:atomptr_p
Unexecuted instantiation: pim_register.c:atomptr_p
Unexecuted instantiation: pimd.c:atomptr_p
Unexecuted instantiation: pim_cmd.c:atomptr_p
Unexecuted instantiation: pim_igmp.c:atomptr_p
Unexecuted instantiation: pim_igmp_mtrace.c:atomptr_p
Unexecuted instantiation: pim_igmpv2.c:atomptr_p
Unexecuted instantiation: pim_igmpv3.c:atomptr_p
Unexecuted instantiation: pim_main.c:atomptr_p
Unexecuted instantiation: pim_mlag.c:atomptr_p
Unexecuted instantiation: pim_msdp.c:atomptr_p
Unexecuted instantiation: pim_msdp_packet.c:atomptr_p
Unexecuted instantiation: pim_msdp_socket.c:atomptr_p
Unexecuted instantiation: pim_signals.c:atomptr_p
Unexecuted instantiation: pim_zpthread.c:atomptr_p
Unexecuted instantiation: frr-pim.yang.c:atomptr_p
Unexecuted instantiation: frr-pim-rp.yang.c:atomptr_p
Unexecuted instantiation: frr-gmp.yang.c:atomptr_p
51
static inline bool atomptr_l(atomptr_t val)
52
16
{
53
16
  return (bool)(val & ATOMPTR_LOCK);
54
16
}
Unexecuted instantiation: ospf_main.c:atomptr_l
Unexecuted instantiation: frr-ospf-route-map.yang.c:atomptr_l
Unexecuted instantiation: ospf_bfd.c:atomptr_l
Unexecuted instantiation: ospf_dump.c:atomptr_l
Unexecuted instantiation: ospf_dump_api.c:atomptr_l
Unexecuted instantiation: ospf_errors.c:atomptr_l
Unexecuted instantiation: ospf_interface.c:atomptr_l
Unexecuted instantiation: ospf_lsa.c:atomptr_l
Unexecuted instantiation: ospf_lsdb.c:atomptr_l
Unexecuted instantiation: ospf_neighbor.c:atomptr_l
Unexecuted instantiation: ospf_network.c:atomptr_l
Unexecuted instantiation: ospf_nsm.c:atomptr_l
Unexecuted instantiation: ospf_opaque.c:atomptr_l
Unexecuted instantiation: ospf_packet.c:atomptr_l
Unexecuted instantiation: ospf_ri.c:atomptr_l
Unexecuted instantiation: ospf_routemap.c:atomptr_l
Unexecuted instantiation: ospf_routemap_nb.c:atomptr_l
Unexecuted instantiation: ospf_routemap_nb_config.c:atomptr_l
Unexecuted instantiation: ospf_spf.c:atomptr_l
Unexecuted instantiation: ospf_ti_lfa.c:atomptr_l
Unexecuted instantiation: ospf_sr.c:atomptr_l
Unexecuted instantiation: ospf_te.c:atomptr_l
Unexecuted instantiation: ospf_vty.c:atomptr_l
Unexecuted instantiation: ospf_zebra.c:atomptr_l
Unexecuted instantiation: ospfd.c:atomptr_l
Unexecuted instantiation: ospf_gr_helper.c:atomptr_l
Unexecuted instantiation: ospf_abr.c:atomptr_l
Unexecuted instantiation: ospf_apiserver.c:atomptr_l
Unexecuted instantiation: ospf_asbr.c:atomptr_l
Unexecuted instantiation: ospf_ase.c:atomptr_l
Unexecuted instantiation: ospf_ext.c:atomptr_l
Unexecuted instantiation: ospf_flood.c:atomptr_l
Unexecuted instantiation: ospf_gr.c:atomptr_l
Unexecuted instantiation: ospf_ia.c:atomptr_l
Unexecuted instantiation: ospf_ism.c:atomptr_l
Unexecuted instantiation: ospf_ldp_sync.c:atomptr_l
Unexecuted instantiation: ospf_route.c:atomptr_l
Unexecuted instantiation: ospf_api.c:atomptr_l
Unexecuted instantiation: affinitymap.c:atomptr_l
Unexecuted instantiation: affinitymap_cli.c:atomptr_l
Unexecuted instantiation: affinitymap_northbound.c:atomptr_l
Unexecuted instantiation: agg_table.c:atomptr_l
atomlist.c:atomptr_l
Line
Count
Source
52
16
{
53
16
  return (bool)(val & ATOMPTR_LOCK);
54
16
}
Unexecuted instantiation: asn.c:atomptr_l
Unexecuted instantiation: bfd.c:atomptr_l
Unexecuted instantiation: buffer.c:atomptr_l
Unexecuted instantiation: command.c:atomptr_l
Unexecuted instantiation: command_graph.c:atomptr_l
Unexecuted instantiation: command_lex.c:atomptr_l
Unexecuted instantiation: command_match.c:atomptr_l
Unexecuted instantiation: command_parse.c:atomptr_l
Unexecuted instantiation: cspf.c:atomptr_l
Unexecuted instantiation: debug.c:atomptr_l
Unexecuted instantiation: distribute.c:atomptr_l
Unexecuted instantiation: ferr.c:atomptr_l
Unexecuted instantiation: filter.c:atomptr_l
Unexecuted instantiation: filter_cli.c:atomptr_l
Unexecuted instantiation: filter_nb.c:atomptr_l
Unexecuted instantiation: flex_algo.c:atomptr_l
Unexecuted instantiation: frrcu.c:atomptr_l
Unexecuted instantiation: frr_pthread.c:atomptr_l
Unexecuted instantiation: grammar_sandbox.c:atomptr_l
Unexecuted instantiation: hash.c:atomptr_l
Unexecuted instantiation: id_alloc.c:atomptr_l
Unexecuted instantiation: if.c:atomptr_l
Unexecuted instantiation: if_rmap.c:atomptr_l
Unexecuted instantiation: json.c:atomptr_l
Unexecuted instantiation: keychain.c:atomptr_l
Unexecuted instantiation: ldp_sync.c:atomptr_l
Unexecuted instantiation: lib_errors.c:atomptr_l
Unexecuted instantiation: lib_vty.c:atomptr_l
Unexecuted instantiation: libfrr.c:atomptr_l
Unexecuted instantiation: link_state.c:atomptr_l
Unexecuted instantiation: log.c:atomptr_l
Unexecuted instantiation: log_filter.c:atomptr_l
Unexecuted instantiation: log_vty.c:atomptr_l
Unexecuted instantiation: memory.c:atomptr_l
Unexecuted instantiation: mgmt_be_client.c:atomptr_l
Unexecuted instantiation: mgmt_fe_client.c:atomptr_l
Unexecuted instantiation: mgmt_msg.c:atomptr_l
Unexecuted instantiation: mlag.c:atomptr_l
Unexecuted instantiation: srv6.c:atomptr_l
Unexecuted instantiation: network.c:atomptr_l
Unexecuted instantiation: nexthop.c:atomptr_l
Unexecuted instantiation: netns_linux.c:atomptr_l
Unexecuted instantiation: nexthop_group.c:atomptr_l
Unexecuted instantiation: northbound.c:atomptr_l
Unexecuted instantiation: northbound_cli.c:atomptr_l
Unexecuted instantiation: northbound_db.c:atomptr_l
Unexecuted instantiation: pid_output.c:atomptr_l
Unexecuted instantiation: plist.c:atomptr_l
Unexecuted instantiation: prefix.c:atomptr_l
Unexecuted instantiation: privs.c:atomptr_l
Unexecuted instantiation: pullwr.c:atomptr_l
Unexecuted instantiation: qobj.c:atomptr_l
Unexecuted instantiation: routemap.c:atomptr_l
Unexecuted instantiation: routemap_cli.c:atomptr_l
Unexecuted instantiation: routemap_northbound.c:atomptr_l
Unexecuted instantiation: sbuf.c:atomptr_l
Unexecuted instantiation: sigevent.c:atomptr_l
Unexecuted instantiation: skiplist.c:atomptr_l
Unexecuted instantiation: sockopt.c:atomptr_l
Unexecuted instantiation: sockunion.c:atomptr_l
Unexecuted instantiation: spf_backoff.c:atomptr_l
Unexecuted instantiation: srcdest_table.c:atomptr_l
Unexecuted instantiation: stream.c:atomptr_l
Unexecuted instantiation: systemd.c:atomptr_l
Unexecuted instantiation: table.c:atomptr_l
Unexecuted instantiation: termtable.c:atomptr_l
Unexecuted instantiation: event.c:atomptr_l
Unexecuted instantiation: vrf.c:atomptr_l
Unexecuted instantiation: vty.c:atomptr_l
Unexecuted instantiation: wheel.c:atomptr_l
Unexecuted instantiation: workqueue.c:atomptr_l
Unexecuted instantiation: xref.c:atomptr_l
Unexecuted instantiation: yang.c:atomptr_l
Unexecuted instantiation: yang_translator.c:atomptr_l
Unexecuted instantiation: yang_wrappers.c:atomptr_l
Unexecuted instantiation: zclient.c:atomptr_l
Unexecuted instantiation: zlog.c:atomptr_l
Unexecuted instantiation: zlog_5424.c:atomptr_l
Unexecuted instantiation: zlog_5424_cli.c:atomptr_l
Unexecuted instantiation: zlog_live.c:atomptr_l
Unexecuted instantiation: zlog_targets.c:atomptr_l
Unexecuted instantiation: routing_nb.c:atomptr_l
Unexecuted instantiation: routing_nb_config.c:atomptr_l
Unexecuted instantiation: tc.c:atomptr_l
Unexecuted instantiation: frr-affinity-map.yang.c:atomptr_l
Unexecuted instantiation: frr-filter.yang.c:atomptr_l
Unexecuted instantiation: frr-if-rmap.yang.c:atomptr_l
Unexecuted instantiation: frr-interface.yang.c:atomptr_l
Unexecuted instantiation: frr-route-map.yang.c:atomptr_l
Unexecuted instantiation: frr-route-types.yang.c:atomptr_l
Unexecuted instantiation: frr-vrf.yang.c:atomptr_l
Unexecuted instantiation: frr-routing.yang.c:atomptr_l
Unexecuted instantiation: frr-nexthop.yang.c:atomptr_l
Unexecuted instantiation: ietf-routing-types.yang.c:atomptr_l
Unexecuted instantiation: ietf-interfaces.yang.c:atomptr_l
Unexecuted instantiation: ietf-bgp-types.yang.c:atomptr_l
Unexecuted instantiation: frr-module-translator.yang.c:atomptr_l
Unexecuted instantiation: connected.c:atomptr_l
Unexecuted instantiation: if_netlink.c:atomptr_l
Unexecuted instantiation: interface.c:atomptr_l
Unexecuted instantiation: ioctl.c:atomptr_l
Unexecuted instantiation: ipforward_proc.c:atomptr_l
Unexecuted instantiation: kernel_netlink.c:atomptr_l
Unexecuted instantiation: label_manager.c:atomptr_l
Unexecuted instantiation: main.c:atomptr_l
Unexecuted instantiation: netconf_netlink.c:atomptr_l
Unexecuted instantiation: redistribute.c:atomptr_l
Unexecuted instantiation: router-id.c:atomptr_l
Unexecuted instantiation: rt_netlink.c:atomptr_l
Unexecuted instantiation: rtadv.c:atomptr_l
Unexecuted instantiation: rtread_netlink.c:atomptr_l
Unexecuted instantiation: rule_netlink.c:atomptr_l
Unexecuted instantiation: table_manager.c:atomptr_l
Unexecuted instantiation: tc_netlink.c:atomptr_l
Unexecuted instantiation: zapi_msg.c:atomptr_l
Unexecuted instantiation: zebra_affinitymap.c:atomptr_l
Unexecuted instantiation: zebra_dplane.c:atomptr_l
Unexecuted instantiation: zebra_errors.c:atomptr_l
Unexecuted instantiation: zebra_gr.c:atomptr_l
Unexecuted instantiation: zebra_l2.c:atomptr_l
Unexecuted instantiation: zebra_l2_bridge_if.c:atomptr_l
Unexecuted instantiation: zebra_evpn.c:atomptr_l
Unexecuted instantiation: zebra_evpn_mac.c:atomptr_l
Unexecuted instantiation: zebra_evpn_neigh.c:atomptr_l
Unexecuted instantiation: zebra_mlag.c:atomptr_l
Unexecuted instantiation: zebra_mlag_vty.c:atomptr_l
Unexecuted instantiation: zebra_mpls.c:atomptr_l
Unexecuted instantiation: zebra_mpls_netlink.c:atomptr_l
Unexecuted instantiation: zebra_mpls_null.c:atomptr_l
Unexecuted instantiation: zebra_mpls_vty.c:atomptr_l
Unexecuted instantiation: zebra_srv6.c:atomptr_l
Unexecuted instantiation: zebra_srv6_vty.c:atomptr_l
Unexecuted instantiation: zebra_mroute.c:atomptr_l
Unexecuted instantiation: zebra_nb.c:atomptr_l
Unexecuted instantiation: zebra_nb_config.c:atomptr_l
Unexecuted instantiation: zebra_nb_rpcs.c:atomptr_l
Unexecuted instantiation: zebra_nb_state.c:atomptr_l
Unexecuted instantiation: zebra_netns_id.c:atomptr_l
Unexecuted instantiation: zebra_netns_notify.c:atomptr_l
Unexecuted instantiation: zebra_nhg.c:atomptr_l
Unexecuted instantiation: zebra_ns.c:atomptr_l
Unexecuted instantiation: zebra_opaque.c:atomptr_l
Unexecuted instantiation: zebra_pbr.c:atomptr_l
Unexecuted instantiation: zebra_ptm.c:atomptr_l
Unexecuted instantiation: zebra_ptm_redistribute.c:atomptr_l
Unexecuted instantiation: zebra_pw.c:atomptr_l
Unexecuted instantiation: zebra_rib.c:atomptr_l
Unexecuted instantiation: zebra_router.c:atomptr_l
Unexecuted instantiation: zebra_rnh.c:atomptr_l
Unexecuted instantiation: zebra_routemap.c:atomptr_l
Unexecuted instantiation: zebra_routemap_nb.c:atomptr_l
Unexecuted instantiation: zebra_routemap_nb_config.c:atomptr_l
Unexecuted instantiation: zebra_script.c:atomptr_l
Unexecuted instantiation: zebra_srte.c:atomptr_l
Unexecuted instantiation: zebra_tc.c:atomptr_l
Unexecuted instantiation: zebra_vrf.c:atomptr_l
Unexecuted instantiation: zebra_vty.c:atomptr_l
Unexecuted instantiation: zebra_vxlan.c:atomptr_l
Unexecuted instantiation: zebra_vxlan_if.c:atomptr_l
Unexecuted instantiation: zebra_evpn_mh.c:atomptr_l
Unexecuted instantiation: zebra_neigh.c:atomptr_l
Unexecuted instantiation: zserv.c:atomptr_l
Unexecuted instantiation: debug_nl.c:atomptr_l
Unexecuted instantiation: frr-zebra.yang.c:atomptr_l
Unexecuted instantiation: frr-zebra-route-map.yang.c:atomptr_l
Unexecuted instantiation: bgp_main.c:atomptr_l
Unexecuted instantiation: frr-bgp-types.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-common-structure.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-common.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-neighbor.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-peer-group.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-bmp.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-rpki.yang.c:atomptr_l
Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-filter.yang.c:atomptr_l
Unexecuted instantiation: frr-bgp-route-map.yang.c:atomptr_l
Unexecuted instantiation: bgp_attr.c:atomptr_l
Unexecuted instantiation: bgp_attr_evpn.c:atomptr_l
Unexecuted instantiation: bgp_clist.c:atomptr_l
Unexecuted instantiation: bgp_community.c:atomptr_l
Unexecuted instantiation: bgp_community_alias.c:atomptr_l
Unexecuted instantiation: bgp_debug.c:atomptr_l
Unexecuted instantiation: bgp_dump.c:atomptr_l
Unexecuted instantiation: bgp_ecommunity.c:atomptr_l
Unexecuted instantiation: bgp_errors.c:atomptr_l
Unexecuted instantiation: bgp_evpn.c:atomptr_l
Unexecuted instantiation: bgp_evpn_mh.c:atomptr_l
Unexecuted instantiation: bgp_evpn_vty.c:atomptr_l
Unexecuted instantiation: bgp_filter.c:atomptr_l
Unexecuted instantiation: bgp_flowspec_vty.c:atomptr_l
Unexecuted instantiation: bgp_fsm.c:atomptr_l
Unexecuted instantiation: bgp_io.c:atomptr_l
Unexecuted instantiation: bgp_keepalives.c:atomptr_l
Unexecuted instantiation: bgp_labelpool.c:atomptr_l
Unexecuted instantiation: bgp_lcommunity.c:atomptr_l
Unexecuted instantiation: bgp_mac.c:atomptr_l
Unexecuted instantiation: bgp_mpath.c:atomptr_l
Unexecuted instantiation: bgp_mplsvpn.c:atomptr_l
Unexecuted instantiation: bgp_network.c:atomptr_l
Unexecuted instantiation: bgp_nexthop.c:atomptr_l
Unexecuted instantiation: bgp_nht.c:atomptr_l
Unexecuted instantiation: bgp_packet.c:atomptr_l
Unexecuted instantiation: bgp_pbr.c:atomptr_l
Unexecuted instantiation: bgp_rd.c:atomptr_l
Unexecuted instantiation: bgp_regex.c:atomptr_l
Unexecuted instantiation: bgp_route.c:atomptr_l
Unexecuted instantiation: bgp_routemap.c:atomptr_l
Unexecuted instantiation: bgp_routemap_nb.c:atomptr_l
Unexecuted instantiation: bgp_routemap_nb_config.c:atomptr_l
Unexecuted instantiation: bgp_table.c:atomptr_l
Unexecuted instantiation: bgp_updgrp.c:atomptr_l
Unexecuted instantiation: bgp_updgrp_adv.c:atomptr_l
Unexecuted instantiation: bgp_updgrp_packet.c:atomptr_l
Unexecuted instantiation: bgp_vpn.c:atomptr_l
Unexecuted instantiation: bgp_vty.c:atomptr_l
Unexecuted instantiation: bgp_zebra.c:atomptr_l
Unexecuted instantiation: bgpd.c:atomptr_l
Unexecuted instantiation: bgp_rfapi_cfg.c:atomptr_l
Unexecuted instantiation: rfapi_import.c:atomptr_l
Unexecuted instantiation: rfapi.c:atomptr_l
Unexecuted instantiation: rfapi_ap.c:atomptr_l
Unexecuted instantiation: rfapi_encap_tlv.c:atomptr_l
Unexecuted instantiation: rfapi_nve_addr.c:atomptr_l
Unexecuted instantiation: rfapi_monitor.c:atomptr_l
Unexecuted instantiation: rfapi_rib.c:atomptr_l
Unexecuted instantiation: rfapi_vty.c:atomptr_l
Unexecuted instantiation: vnc_debug.c:atomptr_l
Unexecuted instantiation: vnc_export_bgp.c:atomptr_l
Unexecuted instantiation: vnc_export_table.c:atomptr_l
Unexecuted instantiation: vnc_import_bgp.c:atomptr_l
Unexecuted instantiation: vnc_zebra.c:atomptr_l
Unexecuted instantiation: bgp_addpath.c:atomptr_l
Unexecuted instantiation: bgp_advertise.c:atomptr_l
Unexecuted instantiation: bgp_aspath.c:atomptr_l
Unexecuted instantiation: bgp_bfd.c:atomptr_l
Unexecuted instantiation: bgp_conditional_adv.c:atomptr_l
Unexecuted instantiation: bgp_damp.c:atomptr_l
Unexecuted instantiation: bgp_encap_tlv.c:atomptr_l
Unexecuted instantiation: bgp_flowspec.c:atomptr_l
Unexecuted instantiation: bgp_flowspec_util.c:atomptr_l
Unexecuted instantiation: bgp_label.c:atomptr_l
Unexecuted instantiation: bgp_open.c:atomptr_l
Unexecuted instantiation: rfp_example.c:atomptr_l
Unexecuted instantiation: pim_addr.c:atomptr_l
Unexecuted instantiation: pim_assert.c:atomptr_l
Unexecuted instantiation: pim_bfd.c:atomptr_l
Unexecuted instantiation: pim_bsm.c:atomptr_l
Unexecuted instantiation: pim_cmd_common.c:atomptr_l
Unexecuted instantiation: pim_errors.c:atomptr_l
Unexecuted instantiation: pim_hello.c:atomptr_l
Unexecuted instantiation: pim_iface.c:atomptr_l
Unexecuted instantiation: pim_ifchannel.c:atomptr_l
Unexecuted instantiation: pim_instance.c:atomptr_l
Unexecuted instantiation: pim_join.c:atomptr_l
Unexecuted instantiation: pim_jp_agg.c:atomptr_l
Unexecuted instantiation: pim_macro.c:atomptr_l
Unexecuted instantiation: pim_mroute.c:atomptr_l
Unexecuted instantiation: pim_msg.c:atomptr_l
Unexecuted instantiation: pim_nb.c:atomptr_l
Unexecuted instantiation: pim_nb_config.c:atomptr_l
Unexecuted instantiation: pim_neighbor.c:atomptr_l
Unexecuted instantiation: pim_nht.c:atomptr_l
Unexecuted instantiation: pim_oil.c:atomptr_l
Unexecuted instantiation: pim_pim.c:atomptr_l
Unexecuted instantiation: pim_routemap.c:atomptr_l
Unexecuted instantiation: pim_rp.c:atomptr_l
Unexecuted instantiation: pim_rpf.c:atomptr_l
Unexecuted instantiation: pim_sock.c:atomptr_l
Unexecuted instantiation: pim_ssm.c:atomptr_l
Unexecuted instantiation: pim_ssmpingd.c:atomptr_l
Unexecuted instantiation: pim_static.c:atomptr_l
Unexecuted instantiation: pim_str.c:atomptr_l
Unexecuted instantiation: pim_tib.c:atomptr_l
Unexecuted instantiation: pim_time.c:atomptr_l
Unexecuted instantiation: pim_tlv.c:atomptr_l
Unexecuted instantiation: pim_upstream.c:atomptr_l
Unexecuted instantiation: pim_util.c:atomptr_l
Unexecuted instantiation: pim_vty.c:atomptr_l
Unexecuted instantiation: pim_zebra.c:atomptr_l
Unexecuted instantiation: pim_zlookup.c:atomptr_l
Unexecuted instantiation: pim_vxlan.c:atomptr_l
Unexecuted instantiation: pim_register.c:atomptr_l
Unexecuted instantiation: pimd.c:atomptr_l
Unexecuted instantiation: pim_cmd.c:atomptr_l
Unexecuted instantiation: pim_igmp.c:atomptr_l
Unexecuted instantiation: pim_igmp_mtrace.c:atomptr_l
Unexecuted instantiation: pim_igmpv2.c:atomptr_l
Unexecuted instantiation: pim_igmpv3.c:atomptr_l
Unexecuted instantiation: pim_main.c:atomptr_l
Unexecuted instantiation: pim_mlag.c:atomptr_l
Unexecuted instantiation: pim_msdp.c:atomptr_l
Unexecuted instantiation: pim_msdp_packet.c:atomptr_l
Unexecuted instantiation: pim_msdp_socket.c:atomptr_l
Unexecuted instantiation: pim_signals.c:atomptr_l
Unexecuted instantiation: pim_zpthread.c:atomptr_l
Unexecuted instantiation: frr-pim.yang.c:atomptr_l
Unexecuted instantiation: frr-pim-rp.yang.c:atomptr_l
Unexecuted instantiation: frr-gmp.yang.c:atomptr_l
55
static inline bool atomptr_u(atomptr_t val)
56
0
{
57
0
  return (bool)(val & ATOMPTR_USER);
58
0
}
Unexecuted instantiation: ospf_main.c:atomptr_u
Unexecuted instantiation: frr-ospf-route-map.yang.c:atomptr_u
Unexecuted instantiation: ospf_bfd.c:atomptr_u
Unexecuted instantiation: ospf_dump.c:atomptr_u
Unexecuted instantiation: ospf_dump_api.c:atomptr_u
Unexecuted instantiation: ospf_errors.c:atomptr_u
Unexecuted instantiation: ospf_interface.c:atomptr_u
Unexecuted instantiation: ospf_lsa.c:atomptr_u
Unexecuted instantiation: ospf_lsdb.c:atomptr_u
Unexecuted instantiation: ospf_neighbor.c:atomptr_u
Unexecuted instantiation: ospf_network.c:atomptr_u
Unexecuted instantiation: ospf_nsm.c:atomptr_u
Unexecuted instantiation: ospf_opaque.c:atomptr_u
Unexecuted instantiation: ospf_packet.c:atomptr_u
Unexecuted instantiation: ospf_ri.c:atomptr_u
Unexecuted instantiation: ospf_routemap.c:atomptr_u
Unexecuted instantiation: ospf_routemap_nb.c:atomptr_u
Unexecuted instantiation: ospf_routemap_nb_config.c:atomptr_u
Unexecuted instantiation: ospf_spf.c:atomptr_u
Unexecuted instantiation: ospf_ti_lfa.c:atomptr_u
Unexecuted instantiation: ospf_sr.c:atomptr_u
Unexecuted instantiation: ospf_te.c:atomptr_u
Unexecuted instantiation: ospf_vty.c:atomptr_u
Unexecuted instantiation: ospf_zebra.c:atomptr_u
Unexecuted instantiation: ospfd.c:atomptr_u
Unexecuted instantiation: ospf_gr_helper.c:atomptr_u
Unexecuted instantiation: ospf_abr.c:atomptr_u
Unexecuted instantiation: ospf_apiserver.c:atomptr_u
Unexecuted instantiation: ospf_asbr.c:atomptr_u
Unexecuted instantiation: ospf_ase.c:atomptr_u
Unexecuted instantiation: ospf_ext.c:atomptr_u
Unexecuted instantiation: ospf_flood.c:atomptr_u
Unexecuted instantiation: ospf_gr.c:atomptr_u
Unexecuted instantiation: ospf_ia.c:atomptr_u
Unexecuted instantiation: ospf_ism.c:atomptr_u
Unexecuted instantiation: ospf_ldp_sync.c:atomptr_u
Unexecuted instantiation: ospf_route.c:atomptr_u
Unexecuted instantiation: ospf_api.c:atomptr_u
Unexecuted instantiation: affinitymap.c:atomptr_u
Unexecuted instantiation: affinitymap_cli.c:atomptr_u
Unexecuted instantiation: affinitymap_northbound.c:atomptr_u
Unexecuted instantiation: agg_table.c:atomptr_u
Unexecuted instantiation: atomlist.c:atomptr_u
Unexecuted instantiation: asn.c:atomptr_u
Unexecuted instantiation: bfd.c:atomptr_u
Unexecuted instantiation: buffer.c:atomptr_u
Unexecuted instantiation: command.c:atomptr_u
Unexecuted instantiation: command_graph.c:atomptr_u
Unexecuted instantiation: command_lex.c:atomptr_u
Unexecuted instantiation: command_match.c:atomptr_u
Unexecuted instantiation: command_parse.c:atomptr_u
Unexecuted instantiation: cspf.c:atomptr_u
Unexecuted instantiation: debug.c:atomptr_u
Unexecuted instantiation: distribute.c:atomptr_u
Unexecuted instantiation: ferr.c:atomptr_u
Unexecuted instantiation: filter.c:atomptr_u
Unexecuted instantiation: filter_cli.c:atomptr_u
Unexecuted instantiation: filter_nb.c:atomptr_u
Unexecuted instantiation: flex_algo.c:atomptr_u
Unexecuted instantiation: frrcu.c:atomptr_u
Unexecuted instantiation: frr_pthread.c:atomptr_u
Unexecuted instantiation: grammar_sandbox.c:atomptr_u
Unexecuted instantiation: hash.c:atomptr_u
Unexecuted instantiation: id_alloc.c:atomptr_u
Unexecuted instantiation: if.c:atomptr_u
Unexecuted instantiation: if_rmap.c:atomptr_u
Unexecuted instantiation: json.c:atomptr_u
Unexecuted instantiation: keychain.c:atomptr_u
Unexecuted instantiation: ldp_sync.c:atomptr_u
Unexecuted instantiation: lib_errors.c:atomptr_u
Unexecuted instantiation: lib_vty.c:atomptr_u
Unexecuted instantiation: libfrr.c:atomptr_u
Unexecuted instantiation: link_state.c:atomptr_u
Unexecuted instantiation: log.c:atomptr_u
Unexecuted instantiation: log_filter.c:atomptr_u
Unexecuted instantiation: log_vty.c:atomptr_u
Unexecuted instantiation: memory.c:atomptr_u
Unexecuted instantiation: mgmt_be_client.c:atomptr_u
Unexecuted instantiation: mgmt_fe_client.c:atomptr_u
Unexecuted instantiation: mgmt_msg.c:atomptr_u
Unexecuted instantiation: mlag.c:atomptr_u
Unexecuted instantiation: srv6.c:atomptr_u
Unexecuted instantiation: network.c:atomptr_u
Unexecuted instantiation: nexthop.c:atomptr_u
Unexecuted instantiation: netns_linux.c:atomptr_u
Unexecuted instantiation: nexthop_group.c:atomptr_u
Unexecuted instantiation: northbound.c:atomptr_u
Unexecuted instantiation: northbound_cli.c:atomptr_u
Unexecuted instantiation: northbound_db.c:atomptr_u
Unexecuted instantiation: pid_output.c:atomptr_u
Unexecuted instantiation: plist.c:atomptr_u
Unexecuted instantiation: prefix.c:atomptr_u
Unexecuted instantiation: privs.c:atomptr_u
Unexecuted instantiation: pullwr.c:atomptr_u
Unexecuted instantiation: qobj.c:atomptr_u
Unexecuted instantiation: routemap.c:atomptr_u
Unexecuted instantiation: routemap_cli.c:atomptr_u
Unexecuted instantiation: routemap_northbound.c:atomptr_u
Unexecuted instantiation: sbuf.c:atomptr_u
Unexecuted instantiation: sigevent.c:atomptr_u
Unexecuted instantiation: skiplist.c:atomptr_u
Unexecuted instantiation: sockopt.c:atomptr_u
Unexecuted instantiation: sockunion.c:atomptr_u
Unexecuted instantiation: spf_backoff.c:atomptr_u
Unexecuted instantiation: srcdest_table.c:atomptr_u
Unexecuted instantiation: stream.c:atomptr_u
Unexecuted instantiation: systemd.c:atomptr_u
Unexecuted instantiation: table.c:atomptr_u
Unexecuted instantiation: termtable.c:atomptr_u
Unexecuted instantiation: event.c:atomptr_u
Unexecuted instantiation: vrf.c:atomptr_u
Unexecuted instantiation: vty.c:atomptr_u
Unexecuted instantiation: wheel.c:atomptr_u
Unexecuted instantiation: workqueue.c:atomptr_u
Unexecuted instantiation: xref.c:atomptr_u
Unexecuted instantiation: yang.c:atomptr_u
Unexecuted instantiation: yang_translator.c:atomptr_u
Unexecuted instantiation: yang_wrappers.c:atomptr_u
Unexecuted instantiation: zclient.c:atomptr_u
Unexecuted instantiation: zlog.c:atomptr_u
Unexecuted instantiation: zlog_5424.c:atomptr_u
Unexecuted instantiation: zlog_5424_cli.c:atomptr_u
Unexecuted instantiation: zlog_live.c:atomptr_u
Unexecuted instantiation: zlog_targets.c:atomptr_u
Unexecuted instantiation: routing_nb.c:atomptr_u
Unexecuted instantiation: routing_nb_config.c:atomptr_u
Unexecuted instantiation: tc.c:atomptr_u
Unexecuted instantiation: frr-affinity-map.yang.c:atomptr_u
Unexecuted instantiation: frr-filter.yang.c:atomptr_u
Unexecuted instantiation: frr-if-rmap.yang.c:atomptr_u
Unexecuted instantiation: frr-interface.yang.c:atomptr_u
Unexecuted instantiation: frr-route-map.yang.c:atomptr_u
Unexecuted instantiation: frr-route-types.yang.c:atomptr_u
Unexecuted instantiation: frr-vrf.yang.c:atomptr_u
Unexecuted instantiation: frr-routing.yang.c:atomptr_u
Unexecuted instantiation: frr-nexthop.yang.c:atomptr_u
Unexecuted instantiation: ietf-routing-types.yang.c:atomptr_u
Unexecuted instantiation: ietf-interfaces.yang.c:atomptr_u
Unexecuted instantiation: ietf-bgp-types.yang.c:atomptr_u
Unexecuted instantiation: frr-module-translator.yang.c:atomptr_u
Unexecuted instantiation: connected.c:atomptr_u
Unexecuted instantiation: if_netlink.c:atomptr_u
Unexecuted instantiation: interface.c:atomptr_u
Unexecuted instantiation: ioctl.c:atomptr_u
Unexecuted instantiation: ipforward_proc.c:atomptr_u
Unexecuted instantiation: kernel_netlink.c:atomptr_u
Unexecuted instantiation: label_manager.c:atomptr_u
Unexecuted instantiation: main.c:atomptr_u
Unexecuted instantiation: netconf_netlink.c:atomptr_u
Unexecuted instantiation: redistribute.c:atomptr_u
Unexecuted instantiation: router-id.c:atomptr_u
Unexecuted instantiation: rt_netlink.c:atomptr_u
Unexecuted instantiation: rtadv.c:atomptr_u
Unexecuted instantiation: rtread_netlink.c:atomptr_u
Unexecuted instantiation: rule_netlink.c:atomptr_u
Unexecuted instantiation: table_manager.c:atomptr_u
Unexecuted instantiation: tc_netlink.c:atomptr_u
Unexecuted instantiation: zapi_msg.c:atomptr_u
Unexecuted instantiation: zebra_affinitymap.c:atomptr_u
Unexecuted instantiation: zebra_dplane.c:atomptr_u
Unexecuted instantiation: zebra_errors.c:atomptr_u
Unexecuted instantiation: zebra_gr.c:atomptr_u
Unexecuted instantiation: zebra_l2.c:atomptr_u
Unexecuted instantiation: zebra_l2_bridge_if.c:atomptr_u
Unexecuted instantiation: zebra_evpn.c:atomptr_u
Unexecuted instantiation: zebra_evpn_mac.c:atomptr_u
Unexecuted instantiation: zebra_evpn_neigh.c:atomptr_u
Unexecuted instantiation: zebra_mlag.c:atomptr_u
Unexecuted instantiation: zebra_mlag_vty.c:atomptr_u
Unexecuted instantiation: zebra_mpls.c:atomptr_u
Unexecuted instantiation: zebra_mpls_netlink.c:atomptr_u
Unexecuted instantiation: zebra_mpls_null.c:atomptr_u
Unexecuted instantiation: zebra_mpls_vty.c:atomptr_u
Unexecuted instantiation: zebra_srv6.c:atomptr_u
Unexecuted instantiation: zebra_srv6_vty.c:atomptr_u
Unexecuted instantiation: zebra_mroute.c:atomptr_u
Unexecuted instantiation: zebra_nb.c:atomptr_u
Unexecuted instantiation: zebra_nb_config.c:atomptr_u
Unexecuted instantiation: zebra_nb_rpcs.c:atomptr_u
Unexecuted instantiation: zebra_nb_state.c:atomptr_u
Unexecuted instantiation: zebra_netns_id.c:atomptr_u
Unexecuted instantiation: zebra_netns_notify.c:atomptr_u
Unexecuted instantiation: zebra_nhg.c:atomptr_u
Unexecuted instantiation: zebra_ns.c:atomptr_u
Unexecuted instantiation: zebra_opaque.c:atomptr_u
Unexecuted instantiation: zebra_pbr.c:atomptr_u
Unexecuted instantiation: zebra_ptm.c:atomptr_u
Unexecuted instantiation: zebra_ptm_redistribute.c:atomptr_u
Unexecuted instantiation: zebra_pw.c:atomptr_u
Unexecuted instantiation: zebra_rib.c:atomptr_u
Unexecuted instantiation: zebra_router.c:atomptr_u
Unexecuted instantiation: zebra_rnh.c:atomptr_u
Unexecuted instantiation: zebra_routemap.c:atomptr_u
Unexecuted instantiation: zebra_routemap_nb.c:atomptr_u
Unexecuted instantiation: zebra_routemap_nb_config.c:atomptr_u
Unexecuted instantiation: zebra_script.c:atomptr_u
Unexecuted instantiation: zebra_srte.c:atomptr_u
Unexecuted instantiation: zebra_tc.c:atomptr_u
Unexecuted instantiation: zebra_vrf.c:atomptr_u
Unexecuted instantiation: zebra_vty.c:atomptr_u
Unexecuted instantiation: zebra_vxlan.c:atomptr_u
Unexecuted instantiation: zebra_vxlan_if.c:atomptr_u
Unexecuted instantiation: zebra_evpn_mh.c:atomptr_u
Unexecuted instantiation: zebra_neigh.c:atomptr_u
Unexecuted instantiation: zserv.c:atomptr_u
Unexecuted instantiation: debug_nl.c:atomptr_u
Unexecuted instantiation: frr-zebra.yang.c:atomptr_u
Unexecuted instantiation: frr-zebra-route-map.yang.c:atomptr_u
Unexecuted instantiation: bgp_main.c:atomptr_u
Unexecuted instantiation: frr-bgp-types.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-common-structure.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-common.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-common-multiprotocol.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-neighbor.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-peer-group.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-bmp.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-rpki.yang.c:atomptr_u
Unexecuted instantiation: frr-deviations-bgp-datacenter.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-filter.yang.c:atomptr_u
Unexecuted instantiation: frr-bgp-route-map.yang.c:atomptr_u
Unexecuted instantiation: bgp_attr.c:atomptr_u
Unexecuted instantiation: bgp_attr_evpn.c:atomptr_u
Unexecuted instantiation: bgp_clist.c:atomptr_u
Unexecuted instantiation: bgp_community.c:atomptr_u
Unexecuted instantiation: bgp_community_alias.c:atomptr_u
Unexecuted instantiation: bgp_debug.c:atomptr_u
Unexecuted instantiation: bgp_dump.c:atomptr_u
Unexecuted instantiation: bgp_ecommunity.c:atomptr_u
Unexecuted instantiation: bgp_errors.c:atomptr_u
Unexecuted instantiation: bgp_evpn.c:atomptr_u
Unexecuted instantiation: bgp_evpn_mh.c:atomptr_u
Unexecuted instantiation: bgp_evpn_vty.c:atomptr_u
Unexecuted instantiation: bgp_filter.c:atomptr_u
Unexecuted instantiation: bgp_flowspec_vty.c:atomptr_u
Unexecuted instantiation: bgp_fsm.c:atomptr_u
Unexecuted instantiation: bgp_io.c:atomptr_u
Unexecuted instantiation: bgp_keepalives.c:atomptr_u
Unexecuted instantiation: bgp_labelpool.c:atomptr_u
Unexecuted instantiation: bgp_lcommunity.c:atomptr_u
Unexecuted instantiation: bgp_mac.c:atomptr_u
Unexecuted instantiation: bgp_mpath.c:atomptr_u
Unexecuted instantiation: bgp_mplsvpn.c:atomptr_u
Unexecuted instantiation: bgp_network.c:atomptr_u
Unexecuted instantiation: bgp_nexthop.c:atomptr_u
Unexecuted instantiation: bgp_nht.c:atomptr_u
Unexecuted instantiation: bgp_packet.c:atomptr_u
Unexecuted instantiation: bgp_pbr.c:atomptr_u
Unexecuted instantiation: bgp_rd.c:atomptr_u
Unexecuted instantiation: bgp_regex.c:atomptr_u
Unexecuted instantiation: bgp_route.c:atomptr_u
Unexecuted instantiation: bgp_routemap.c:atomptr_u
Unexecuted instantiation: bgp_routemap_nb.c:atomptr_u
Unexecuted instantiation: bgp_routemap_nb_config.c:atomptr_u
Unexecuted instantiation: bgp_table.c:atomptr_u
Unexecuted instantiation: bgp_updgrp.c:atomptr_u
Unexecuted instantiation: bgp_updgrp_adv.c:atomptr_u
Unexecuted instantiation: bgp_updgrp_packet.c:atomptr_u
Unexecuted instantiation: bgp_vpn.c:atomptr_u
Unexecuted instantiation: bgp_vty.c:atomptr_u
Unexecuted instantiation: bgp_zebra.c:atomptr_u
Unexecuted instantiation: bgpd.c:atomptr_u
Unexecuted instantiation: bgp_rfapi_cfg.c:atomptr_u
Unexecuted instantiation: rfapi_import.c:atomptr_u
Unexecuted instantiation: rfapi.c:atomptr_u
Unexecuted instantiation: rfapi_ap.c:atomptr_u
Unexecuted instantiation: rfapi_encap_tlv.c:atomptr_u
Unexecuted instantiation: rfapi_nve_addr.c:atomptr_u
Unexecuted instantiation: rfapi_monitor.c:atomptr_u
Unexecuted instantiation: rfapi_rib.c:atomptr_u
Unexecuted instantiation: rfapi_vty.c:atomptr_u
Unexecuted instantiation: vnc_debug.c:atomptr_u
Unexecuted instantiation: vnc_export_bgp.c:atomptr_u
Unexecuted instantiation: vnc_export_table.c:atomptr_u
Unexecuted instantiation: vnc_import_bgp.c:atomptr_u
Unexecuted instantiation: vnc_zebra.c:atomptr_u
Unexecuted instantiation: bgp_addpath.c:atomptr_u
Unexecuted instantiation: bgp_advertise.c:atomptr_u
Unexecuted instantiation: bgp_aspath.c:atomptr_u
Unexecuted instantiation: bgp_bfd.c:atomptr_u
Unexecuted instantiation: bgp_conditional_adv.c:atomptr_u
Unexecuted instantiation: bgp_damp.c:atomptr_u
Unexecuted instantiation: bgp_encap_tlv.c:atomptr_u
Unexecuted instantiation: bgp_flowspec.c:atomptr_u
Unexecuted instantiation: bgp_flowspec_util.c:atomptr_u
Unexecuted instantiation: bgp_label.c:atomptr_u
Unexecuted instantiation: bgp_open.c:atomptr_u
Unexecuted instantiation: rfp_example.c:atomptr_u
Unexecuted instantiation: pim_addr.c:atomptr_u
Unexecuted instantiation: pim_assert.c:atomptr_u
Unexecuted instantiation: pim_bfd.c:atomptr_u
Unexecuted instantiation: pim_bsm.c:atomptr_u
Unexecuted instantiation: pim_cmd_common.c:atomptr_u
Unexecuted instantiation: pim_errors.c:atomptr_u
Unexecuted instantiation: pim_hello.c:atomptr_u
Unexecuted instantiation: pim_iface.c:atomptr_u
Unexecuted instantiation: pim_ifchannel.c:atomptr_u
Unexecuted instantiation: pim_instance.c:atomptr_u
Unexecuted instantiation: pim_join.c:atomptr_u
Unexecuted instantiation: pim_jp_agg.c:atomptr_u
Unexecuted instantiation: pim_macro.c:atomptr_u
Unexecuted instantiation: pim_mroute.c:atomptr_u
Unexecuted instantiation: pim_msg.c:atomptr_u
Unexecuted instantiation: pim_nb.c:atomptr_u
Unexecuted instantiation: pim_nb_config.c:atomptr_u
Unexecuted instantiation: pim_neighbor.c:atomptr_u
Unexecuted instantiation: pim_nht.c:atomptr_u
Unexecuted instantiation: pim_oil.c:atomptr_u
Unexecuted instantiation: pim_pim.c:atomptr_u
Unexecuted instantiation: pim_routemap.c:atomptr_u
Unexecuted instantiation: pim_rp.c:atomptr_u
Unexecuted instantiation: pim_rpf.c:atomptr_u
Unexecuted instantiation: pim_sock.c:atomptr_u
Unexecuted instantiation: pim_ssm.c:atomptr_u
Unexecuted instantiation: pim_ssmpingd.c:atomptr_u
Unexecuted instantiation: pim_static.c:atomptr_u
Unexecuted instantiation: pim_str.c:atomptr_u
Unexecuted instantiation: pim_tib.c:atomptr_u
Unexecuted instantiation: pim_time.c:atomptr_u
Unexecuted instantiation: pim_tlv.c:atomptr_u
Unexecuted instantiation: pim_upstream.c:atomptr_u
Unexecuted instantiation: pim_util.c:atomptr_u
Unexecuted instantiation: pim_vty.c:atomptr_u
Unexecuted instantiation: pim_zebra.c:atomptr_u
Unexecuted instantiation: pim_zlookup.c:atomptr_u
Unexecuted instantiation: pim_vxlan.c:atomptr_u
Unexecuted instantiation: pim_register.c:atomptr_u
Unexecuted instantiation: pimd.c:atomptr_u
Unexecuted instantiation: pim_cmd.c:atomptr_u
Unexecuted instantiation: pim_igmp.c:atomptr_u
Unexecuted instantiation: pim_igmp_mtrace.c:atomptr_u
Unexecuted instantiation: pim_igmpv2.c:atomptr_u
Unexecuted instantiation: pim_igmpv3.c:atomptr_u
Unexecuted instantiation: pim_main.c:atomptr_u
Unexecuted instantiation: pim_mlag.c:atomptr_u
Unexecuted instantiation: pim_msdp.c:atomptr_u
Unexecuted instantiation: pim_msdp_packet.c:atomptr_u
Unexecuted instantiation: pim_msdp_socket.c:atomptr_u
Unexecuted instantiation: pim_signals.c:atomptr_u
Unexecuted instantiation: pim_zpthread.c:atomptr_u
Unexecuted instantiation: frr-pim.yang.c:atomptr_u
Unexecuted instantiation: frr-pim-rp.yang.c:atomptr_u
Unexecuted instantiation: frr-gmp.yang.c:atomptr_u
59
60
61
/* the problem with, find(), find_gteq() and find_lt() on atomic lists is that
62
 * they're neither an "acquire" nor a "release" operation;  the element that
63
 * was found is still on the list and doesn't change ownership.  Therefore,
64
 * an atomic transition in ownership state can't be implemented.
65
 *
66
 * Contrast this with add() or pop(): both function calls atomically transfer
67
 * ownership of an item to or from the list, which makes them "acquire" /
68
 * "release" operations.
69
 *
70
 * What can be implemented atomically is a "find_pop()", i.e. try to locate an
71
 * item and atomically try to remove it if found.  It's not currently
72
 * implemented but can be added when needed.
73
 *
74
 * Either way - for find(), generally speaking, if you need to use find() on
75
 * a list then the whole thing probably isn't well-suited to atomic
76
 * implementation and you'll need to have extra locks around to make it work
77
 * correctly.
78
 */
79
#ifdef WNO_ATOMLIST_UNSAFE_FIND
80
# define atomic_find_warn
81
#else
82
# define atomic_find_warn __attribute__((_DEPRECATED( \
83
  "WARNING: find() on atomic lists cannot be atomic by principle; " \
84
  "check code to make sure usage pattern is OK and if it is, use " \
85
  "#define WNO_ATOMLIST_UNSAFE_FIND")))
86
#endif
87
88
89
/* single-linked list, unsorted/arbitrary.
90
 * can be used as queue with add_tail / pop
91
 *
92
 * all operations are lock-free, but not necessarily wait-free.  this means
93
 * that there is no state where the system as a whole stops making process,
94
 * but it *is* possible that a *particular* thread is delayed by some time.
95
 *
96
 * the only way for this to happen is for other threads to continuously make
97
 * updates.  an inactive / blocked / deadlocked other thread cannot cause such
98
 * delays, and to cause such delays a thread must be heavily hitting the list -
99
 * it's a rather theoretical concern.
100
 */
101
102
/* don't use these structs directly */
103
struct atomlist_item {
104
  atomic_uintptr_t next;
105
};
106
16
#define atomlist_itemp(val) ((struct atomlist_item *)atomptr_p(val))
107
108
struct atomlist_head {
109
  atomic_uintptr_t first, last;
110
  atomic_size_t count;
111
};
112
113
/* use as:
114
 *
115
 * PREDECL_ATOMLIST(namelist);
116
 * struct name {
117
 *   struct namelist_item nlitem;
118
 * }
119
 * DECLARE_ATOMLIST(namelist, struct name, nlitem);
120
 */
121
#define PREDECL_ATOMLIST(prefix)                                               \
122
struct prefix ## _head { struct atomlist_head ah; };                           \
123
struct prefix ## _item { struct atomlist_item ai; };                           \
124
MACRO_REQUIRE_SEMICOLON() /* end */
125
126
#define INIT_ATOMLIST(var) { }
127
128
#define DECLARE_ATOMLIST(prefix, type, field)                                  \
129
0
macro_inline void prefix ## _add_head(struct prefix##_head *h, type *item)     \
130
0
{ atomlist_add_head(&h->ah, &item->field.ai); }                          \
Unexecuted instantiation: frrcu.c:rcu_heads_add_head
Unexecuted instantiation: frrcu.c:rcu_threads_add_head
Unexecuted instantiation: zlog.c:zlog_targets_add_head
131
16
macro_inline void prefix ## _add_tail(struct prefix##_head *h, type *item)     \
132
16
{ atomlist_add_tail(&h->ah, &item->field.ai); }                          \
frrcu.c:rcu_threads_add_tail
Line
Count
Source
131
8
macro_inline void prefix ## _add_tail(struct prefix##_head *h, type *item)     \
132
8
{ atomlist_add_tail(&h->ah, &item->field.ai); }                          \
Unexecuted instantiation: frrcu.c:rcu_heads_add_tail
zlog.c:zlog_targets_add_tail
Line
Count
Source
131
8
macro_inline void prefix ## _add_tail(struct prefix##_head *h, type *item)     \
132
8
{ atomlist_add_tail(&h->ah, &item->field.ai); }                          \
133
macro_inline void prefix ## _del_hint(struct prefix##_head *h, type *item,     \
134
0
    atomic_atomptr_t *hint)                                        \
135
0
{ atomlist_del_hint(&h->ah, &item->field.ai, hint); }                    \
Unexecuted instantiation: frrcu.c:rcu_heads_del_hint
Unexecuted instantiation: frrcu.c:rcu_threads_del_hint
Unexecuted instantiation: zlog.c:zlog_targets_del_hint
136
0
macro_inline type *prefix ## _del(struct prefix##_head *h, type *item)         \
137
0
{ atomlist_del_hint(&h->ah, &item->field.ai, NULL);                      \
138
0
  /* TODO: Return NULL if not found */                                   \
139
0
  return item; }                                                         \
140
0
macro_inline type *prefix ## _pop(struct prefix##_head *h)                     \
141
0
{ char *p = (char *)atomlist_pop(&h->ah);                                \
142
0
  return p ? (type *)(p - offsetof(type, field)) : NULL; }               \
Unexecuted instantiation: frrcu.c:rcu_threads_pop
Unexecuted instantiation: zlog.c:zlog_targets_pop
143
3.73k
macro_inline type *prefix ## _first(struct prefix##_head *h)                   \
144
3.73k
{ char *p = atomptr_p(atomic_load_explicit(&h->ah.first,                 \
145
3.73k
        memory_order_acquire));                        \
146
3.73k
  return p ? (type *)(p - offsetof(type, field)) : NULL; }               \
147
1.86k
macro_inline type *prefix ## _next(struct prefix##_head *h, type *item)        \
148
1.86k
{ char *p = atomptr_p(atomic_load_explicit(&item->field.ai.next,         \
149
1.86k
        memory_order_acquire));                        \
150
1.86k
  return p ? (type *)(p - offsetof(type, field)) : NULL; }               \
151
3.73k
macro_inline type *prefix ## _next_safe(struct prefix##_head *h, type *item)   \
152
3.73k
{ return item ? prefix##_next(h, item) : NULL; }                         \
Unexecuted instantiation: frrcu.c:rcu_heads_next_safe
Unexecuted instantiation: frrcu.c:rcu_threads_next_safe
153
0
macro_inline size_t prefix ## _count(struct prefix##_head *h)                  \
154
0
{ return atomic_load_explicit(&h->ah.count, memory_order_relaxed); }     \
Unexecuted instantiation: frrcu.c:rcu_heads_count
Unexecuted instantiation: zlog.c:zlog_targets_count
155
0
macro_inline void prefix ## _init(struct prefix##_head *h)                     \
156
0
{                                                                              \
157
0
  memset(h, 0, sizeof(*h));                                              \
158
0
}                                                                              \
Unexecuted instantiation: frrcu.c:rcu_heads_init
Unexecuted instantiation: frrcu.c:rcu_threads_init
Unexecuted instantiation: zlog.c:zlog_targets_init
159
0
macro_inline void prefix ## _fini(struct prefix##_head *h)                     \
160
0
{                                                                              \
161
0
  assert(prefix ## _count(h) == 0);                                      \
162
0
  memset(h, 0, sizeof(*h));                                              \
163
0
}                                                                              \
Unexecuted instantiation: frrcu.c:rcu_heads_fini
Unexecuted instantiation: frrcu.c:rcu_threads_fini
Unexecuted instantiation: zlog.c:zlog_targets_fini
164
MACRO_REQUIRE_SEMICOLON() /* end */
165
166
/* add_head:
167
 * - contention on ->first pointer
168
 * - return implies completion
169
 */
170
void atomlist_add_head(struct atomlist_head *h, struct atomlist_item *item);
171
172
/* add_tail:
173
 * - concurrent add_tail can cause wait but has progress guarantee
174
 * - return does NOT imply completion.  completion is only guaranteed after
175
 *   all other add_tail operations that started before this add_tail have
176
 *   completed as well.
177
 */
178
void atomlist_add_tail(struct atomlist_head *h, struct atomlist_item *item);
179
180
/* del/del_hint:
181
 *
182
 * OWNER MUST HOLD REFERENCE ON ITEM TO BE DELETED, ENSURING NO OTHER THREAD
183
 * WILL TRY TO DELETE THE SAME ITEM.  DELETING INCLUDES pop().
184
 *
185
 * as with all deletions, threads that started reading earlier may still hold
186
 * pointers to the deleted item.  completion is however guaranteed for all
187
 * reads starting later.
188
 */
189
void atomlist_del_hint(struct atomlist_head *h, struct atomlist_item *item,
190
    atomic_atomptr_t *hint);
191
192
/* pop:
193
 *
194
 * as with all deletions, threads that started reading earlier may still hold
195
 * pointers to the deleted item.  completion is however guaranteed for all
196
 * reads starting later.
197
 */
198
struct atomlist_item *atomlist_pop(struct atomlist_head *h);
199
200
201
202
struct atomsort_item {
203
  atomic_atomptr_t next;
204
};
205
0
#define atomsort_itemp(val) ((struct atomsort_item *)atomptr_p(val))
206
207
struct atomsort_head {
208
  atomic_atomptr_t first;
209
  atomic_size_t count;
210
};
211
212
#define _PREDECL_ATOMSORT(prefix)                                              \
213
struct prefix ## _head { struct atomsort_head ah; };                           \
214
struct prefix ## _item { struct atomsort_item ai; };                           \
215
MACRO_REQUIRE_SEMICOLON() /* end */
216
217
#define INIT_ATOMSORT_UNIQ(var)   { }
218
#define INIT_ATOMSORT_NONUNIQ(var)  { }
219
220
#define _DECLARE_ATOMSORT(prefix, type, field, cmpfn_nuq, cmpfn_uq)            \
221
macro_inline void prefix ## _init(struct prefix##_head *h)                     \
222
{                                                                              \
223
  memset(h, 0, sizeof(*h));                                              \
224
}                                                                              \
225
macro_inline void prefix ## _fini(struct prefix##_head *h)                     \
226
{                                                                              \
227
  assert(h->ah.count == 0);                                              \
228
  memset(h, 0, sizeof(*h));                                              \
229
}                                                                              \
230
macro_inline type *prefix ## _add(struct prefix##_head *h, type *item)         \
231
{                                                                              \
232
  struct atomsort_item *p;                                               \
233
  p = atomsort_add(&h->ah, &item->field.ai, cmpfn_uq);                   \
234
  return container_of_null(p, type, field.ai);                           \
235
}                                                                              \
236
macro_inline type *prefix ## _first(struct prefix##_head *h)                   \
237
{                                                                              \
238
  struct atomsort_item *p;                                               \
239
  p = atomptr_p(atomic_load_explicit(&h->ah.first,                       \
240
        memory_order_acquire));                        \
241
  return container_of_null(p, type, field.ai);                           \
242
}                                                                              \
243
macro_inline type *prefix ## _next(struct prefix##_head *h, type *item)        \
244
{                                                                              \
245
  struct atomsort_item *p;                                               \
246
  p = atomptr_p(atomic_load_explicit(&item->field.ai.next,               \
247
        memory_order_acquire));                        \
248
  return container_of_null(p, type, field.ai);                           \
249
}                                                                              \
250
macro_inline type *prefix ## _next_safe(struct prefix##_head *h, type *item)   \
251
{                                                                              \
252
  return item ? prefix##_next(h, item) : NULL;                           \
253
}                                                                              \
254
atomic_find_warn                                                               \
255
macro_inline type *prefix ## _find_gteq(struct prefix##_head *h,               \
256
    const type *item)                                              \
257
{                                                                              \
258
  type *p = prefix ## _first(h);                                         \
259
  while (p && cmpfn_nuq(&p->field.ai, &item->field.ai) < 0)              \
260
    p = prefix ## _next(h, p);                                     \
261
  return p;                                                              \
262
}                                                                              \
263
atomic_find_warn                                                               \
264
macro_inline type *prefix ## _find_lt(struct prefix##_head *h,                 \
265
    const type *item)                                              \
266
{                                                                              \
267
  type *p = prefix ## _first(h), *prev = NULL;                           \
268
  while (p && cmpfn_nuq(&p->field.ai, &item->field.ai) < 0)              \
269
    p = prefix ## _next(h, (prev = p));                            \
270
  return prev;                                                           \
271
}                                                                              \
272
macro_inline void prefix ## _del_hint(struct prefix##_head *h, type *item,     \
273
    atomic_atomptr_t *hint)                                        \
274
{                                                                              \
275
  atomsort_del_hint(&h->ah, &item->field.ai, hint);                      \
276
}                                                                              \
277
macro_inline type *prefix ## _del(struct prefix##_head *h, type *item)         \
278
{                                                                              \
279
  atomsort_del_hint(&h->ah, &item->field.ai, NULL);                      \
280
  /* TODO: Return NULL if not found */                                   \
281
  return item;                                                           \
282
}                                                                              \
283
macro_inline size_t prefix ## _count(struct prefix##_head *h)                  \
284
{                                                                              \
285
  return atomic_load_explicit(&h->ah.count, memory_order_relaxed);       \
286
}                                                                              \
287
macro_inline type *prefix ## _pop(struct prefix##_head *h)                     \
288
{                                                                              \
289
  struct atomsort_item *p = atomsort_pop(&h->ah);                        \
290
  return p ? container_of(p, type, field.ai) : NULL;                     \
291
}                                                                              \
292
MACRO_REQUIRE_SEMICOLON() /* end */
293
294
#define PREDECL_ATOMSORT_UNIQ(prefix)                                          \
295
  _PREDECL_ATOMSORT(prefix)
296
#define DECLARE_ATOMSORT_UNIQ(prefix, type, field, cmpfn)                      \
297
                                                                               \
298
macro_inline int prefix ## __cmp(const struct atomsort_item *a,                \
299
    const struct atomsort_item *b)                                 \
300
{                                                                              \
301
  return cmpfn(container_of(a, type, field.ai),                          \
302
      container_of(b, type, field.ai));                      \
303
}                                                                              \
304
                                                                               \
305
_DECLARE_ATOMSORT(prefix, type, field,                                         \
306
    prefix ## __cmp, prefix ## __cmp);                             \
307
                                                                               \
308
atomic_find_warn                                                               \
309
macro_inline type *prefix ## _find(struct prefix##_head *h, const type *item)  \
310
{                                                                              \
311
  type *p = prefix ## _first(h);                                         \
312
  int cmpval = 0;                                                        \
313
  while (p && (cmpval = cmpfn(p, item)) < 0)                             \
314
    p = prefix ## _next(h, p);                                     \
315
  if (!p || cmpval > 0)                                                  \
316
    return NULL;                                                   \
317
  return p;                                                              \
318
}                                                                              \
319
MACRO_REQUIRE_SEMICOLON() /* end */
320
321
#define PREDECL_ATOMSORT_NONUNIQ(prefix)                                       \
322
  _PREDECL_ATOMSORT(prefix)
323
#define DECLARE_ATOMSORT_NONUNIQ(prefix, type, field, cmpfn)                   \
324
                                                                               \
325
macro_inline int prefix ## __cmp(const struct atomsort_item *a,                \
326
    const struct atomsort_item *b)                                 \
327
{                                                                              \
328
  return cmpfn(container_of(a, type, field.ai),                          \
329
      container_of(b, type, field.ai));                      \
330
}                                                                              \
331
macro_inline int prefix ## __cmp_uq(const struct atomsort_item *a,             \
332
    const struct atomsort_item *b)                                 \
333
{                                                                              \
334
  int cmpval = cmpfn(container_of(a, type, field.ai),                    \
335
      container_of(b, type, field.ai));                      \
336
  if (cmpval)                                                            \
337
    return cmpval;                                                 \
338
  if (a < b)                                                             \
339
    return -1;                                                     \
340
  if (a > b)                                                             \
341
    return 1;                                                      \
342
  return 0;                                                              \
343
}                                                                              \
344
                                                                               \
345
_DECLARE_ATOMSORT(prefix, type, field,                                         \
346
    prefix ## __cmp, prefix ## __cmp_uq);                          \
347
MACRO_REQUIRE_SEMICOLON() /* end */
348
349
struct atomsort_item *atomsort_add(struct atomsort_head *h,
350
    struct atomsort_item *item, int (*cmpfn)(
351
      const struct atomsort_item *,
352
      const struct atomsort_item *));
353
354
void atomsort_del_hint(struct atomsort_head *h,
355
    struct atomsort_item *item, atomic_atomptr_t *hint);
356
357
struct atomsort_item *atomsort_pop(struct atomsort_head *h);
358
359
#ifdef __cplusplus
360
}
361
#endif
362
363
#endif /* _FRR_ATOMLIST_H */