/src/openvswitch/lib/coverage.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. |
3 | | * |
4 | | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | | * you may not use this file except in compliance with the License. |
6 | | * You may obtain a copy of the License at: |
7 | | * |
8 | | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | | * |
10 | | * Unless required by applicable law or agreed to in writing, software |
11 | | * distributed under the License is distributed on an "AS IS" BASIS, |
12 | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | | * See the License for the specific language governing permissions and |
14 | | * limitations under the License. |
15 | | */ |
16 | | |
17 | | #ifndef COVERAGE_H |
18 | | #define COVERAGE_H 1 |
19 | | |
20 | | /* This file implements a simple form of coverage instrumentation. Points in |
21 | | * source code that are of interest must be explicitly annotated with |
22 | | * COVERAGE_INC. The coverage counters may be logged at any time with |
23 | | * coverage_log(). |
24 | | * |
25 | | * This form of coverage instrumentation is intended to be so lightweight that |
26 | | * it can be enabled in production builds. It is obviously not a substitute |
27 | | * for traditional coverage instrumentation with e.g. "gcov", but it is still |
28 | | * a useful debugging tool. */ |
29 | | |
30 | | #include "ovs-thread.h" |
31 | | #include "compiler.h" |
32 | | |
33 | | /* Makes coverage_run run every 5000 ms (5 seconds). |
34 | | * If this value is redefined, the new value must |
35 | | * divide 60000 (1 minute). */ |
36 | 0 | #define COVERAGE_RUN_INTERVAL 5000 |
37 | | BUILD_ASSERT_DECL(60000 % COVERAGE_RUN_INTERVAL == 0); |
38 | | |
39 | 0 | #define COVERAGE_CLEAR_INTERVAL 1000 |
40 | | BUILD_ASSERT_DECL(COVERAGE_RUN_INTERVAL % COVERAGE_CLEAR_INTERVAL == 0); |
41 | | |
42 | | /* Defines the moving average array length. */ |
43 | 0 | #define MIN_AVG_LEN (60000/COVERAGE_RUN_INTERVAL) |
44 | 0 | #define HR_AVG_LEN 60 |
45 | | |
46 | | /* A coverage counter. */ |
47 | | struct coverage_counter { |
48 | | const char *const name; /* Textual name. */ |
49 | | unsigned int (*const count)(void); /* Gets, zeros this thread's count. */ |
50 | | unsigned long long int total; /* Total count. */ |
51 | | unsigned long long int last_total; |
52 | | /* The moving average arrays. */ |
53 | | unsigned int min[MIN_AVG_LEN]; |
54 | | unsigned int hr[HR_AVG_LEN]; |
55 | | }; |
56 | | |
57 | | void coverage_counter_register(struct coverage_counter*); |
58 | | |
59 | | /* Defines COUNTER. There must be exactly one such definition at file scope |
60 | | * within a program. */ |
61 | | #define COVERAGE_DEFINE(COUNTER) \ |
62 | | DEFINE_STATIC_PER_THREAD_DATA(unsigned int, \ |
63 | | counter_##COUNTER, 0); \ |
64 | | static unsigned int COUNTER##_count(void) \ |
65 | 0 | { \ |
66 | 0 | unsigned int *countp = counter_##COUNTER##_get(); \ |
67 | 0 | unsigned int count = *countp; \ |
68 | 0 | *countp = 0; \ |
69 | 0 | return count; \ |
70 | 0 | } \ Unexecuted instantiation: util.c:util_xalloc_count Unexecuted instantiation: flow.c:flow_extract_count Unexecuted instantiation: flow.c:miniflow_extract_ipv4_pkt_len_error_count Unexecuted instantiation: flow.c:miniflow_extract_ipv4_pkt_too_short_count Unexecuted instantiation: flow.c:miniflow_extract_ipv6_pkt_len_error_count Unexecuted instantiation: flow.c:miniflow_extract_ipv6_pkt_too_short_count Unexecuted instantiation: flow.c:miniflow_malloc_count Unexecuted instantiation: netdev.c:netdev_received_count Unexecuted instantiation: netdev.c:netdev_sent_count Unexecuted instantiation: netdev.c:netdev_add_router_count Unexecuted instantiation: netdev.c:netdev_get_stats_count Unexecuted instantiation: netdev.c:netdev_send_prepare_drops_count Unexecuted instantiation: netdev.c:netdev_push_header_drops_count Unexecuted instantiation: poll-loop.c:poll_create_node_count Unexecuted instantiation: poll-loop.c:poll_zero_timeout_count Unexecuted instantiation: seq.c:seq_change_count Unexecuted instantiation: unixctl.c:unixctl_received_count Unexecuted instantiation: unixctl.c:unixctl_replied_count Unexecuted instantiation: netdev-linux.c:netdev_set_policing_count Unexecuted instantiation: netdev-linux.c:netdev_arp_lookup_count Unexecuted instantiation: netdev-linux.c:netdev_get_ifindex_count Unexecuted instantiation: netdev-linux.c:netdev_get_hwaddr_count Unexecuted instantiation: netdev-linux.c:netdev_set_hwaddr_count Unexecuted instantiation: netdev-linux.c:netdev_get_ethtool_count Unexecuted instantiation: netdev-linux.c:netdev_set_ethtool_count Unexecuted instantiation: netlink-socket.c:netlink_overflow_count Unexecuted instantiation: netlink-socket.c:netlink_received_count Unexecuted instantiation: netlink-socket.c:netlink_recv_jumbo_count Unexecuted instantiation: netlink-socket.c:netlink_sent_count Unexecuted instantiation: ccmap.c:ccmap_expand_count Unexecuted instantiation: ccmap.c:ccmap_shrink_count Unexecuted instantiation: cmap.c:cmap_expand_count Unexecuted instantiation: cmap.c:cmap_shrink_count Unexecuted instantiation: dpif.c:dpif_destroy_count Unexecuted instantiation: dpif.c:dpif_port_add_count Unexecuted instantiation: dpif.c:dpif_port_del_count Unexecuted instantiation: dpif.c:dpif_flow_flush_count Unexecuted instantiation: dpif.c:dpif_flow_get_count Unexecuted instantiation: dpif.c:dpif_flow_put_count Unexecuted instantiation: dpif.c:dpif_flow_del_count Unexecuted instantiation: dpif.c:dpif_execute_count Unexecuted instantiation: dpif.c:dpif_purge_count Unexecuted instantiation: dpif.c:dpif_execute_with_help_count Unexecuted instantiation: dpif.c:dpif_meter_set_count Unexecuted instantiation: dpif.c:dpif_meter_get_count Unexecuted instantiation: dpif.c:dpif_meter_del_count Unexecuted instantiation: hmap.c:hmap_pathological_count Unexecuted instantiation: hmap.c:hmap_expand_count Unexecuted instantiation: hmap.c:hmap_shrink_count Unexecuted instantiation: hmap.c:hmap_reserve_count Unexecuted instantiation: odp-execute.c:datapath_drop_sample_error_count Unexecuted instantiation: odp-execute.c:datapath_drop_nsh_decap_error_count Unexecuted instantiation: odp-execute.c:drop_action_of_pipeline_count Unexecuted instantiation: odp-execute.c:drop_action_bridge_not_found_count Unexecuted instantiation: odp-execute.c:drop_action_recursion_too_deep_count Unexecuted instantiation: odp-execute.c:drop_action_too_many_resubmit_count Unexecuted instantiation: odp-execute.c:drop_action_stack_too_deep_count Unexecuted instantiation: odp-execute.c:drop_action_no_recirculation_context_count Unexecuted instantiation: odp-execute.c:drop_action_recirculation_conflict_count Unexecuted instantiation: odp-execute.c:drop_action_too_many_mpls_labels_count Unexecuted instantiation: odp-execute.c:drop_action_invalid_tunnel_metadata_count Unexecuted instantiation: odp-execute.c:drop_action_unsupported_packet_type_count Unexecuted instantiation: odp-execute.c:drop_action_congestion_count Unexecuted instantiation: odp-execute.c:drop_action_forwarding_disabled_count Unexecuted instantiation: stream.c:pstream_open_count Unexecuted instantiation: stream.c:stream_open_count Unexecuted instantiation: netlink-notifier.c:nln_changed_count Unexecuted instantiation: conntrack.c:conntrack_full_count Unexecuted instantiation: conntrack.c:conntrack_l3csum_err_count Unexecuted instantiation: conntrack.c:conntrack_l4csum_err_count Unexecuted instantiation: conntrack.c:conntrack_lookup_natted_miss_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_meter_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_upcall_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_lock_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_userspace_action_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_tunnel_push_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_tunnel_pop_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_recirc_error_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_port_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_bond_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_tnl_port_count Unexecuted instantiation: dpif-netdev.c:datapath_drop_rx_invalid_packet_count Unexecuted instantiation: hindex.c:hindex_pathological_count Unexecuted instantiation: hindex.c:hindex_expand_count Unexecuted instantiation: hindex.c:hindex_shrink_count Unexecuted instantiation: hindex.c:hindex_reserve_count Unexecuted instantiation: ipf.c:ipf_stuck_frag_list_purged_count Unexecuted instantiation: ipf.c:ipf_l3csum_err_count Unexecuted instantiation: conntrack-tcp.c:conntrack_tcp_seq_chk_bypass_count Unexecuted instantiation: conntrack-tcp.c:conntrack_tcp_seq_chk_failed_count Unexecuted instantiation: conntrack-tcp.c:conntrack_invalid_tcp_flags_count Unexecuted instantiation: ovsdb-idl.c:txn_uncommitted_count Unexecuted instantiation: ovsdb-idl.c:txn_unchanged_count Unexecuted instantiation: ovsdb-idl.c:txn_incomplete_count Unexecuted instantiation: ovsdb-idl.c:txn_aborted_count Unexecuted instantiation: ovsdb-idl.c:txn_success_count Unexecuted instantiation: ovsdb-idl.c:txn_try_again_count Unexecuted instantiation: ovsdb-idl.c:txn_not_locked_count Unexecuted instantiation: ovsdb-idl.c:txn_error_count |
71 | | static inline void COUNTER##_add(unsigned int n) \ |
72 | 44.6M | { \ |
73 | 44.6M | *counter_##COUNTER##_get() += n; \ |
74 | 44.6M | } \ Line | Count | Source | 72 | 44.4M | { \ | 73 | 44.4M | *counter_##COUNTER##_get() += n; \ | 74 | 44.4M | } \ |
Line | Count | Source | 72 | 120k | { \ | 73 | 120k | *counter_##COUNTER##_get() += n; \ | 74 | 120k | } \ |
flow.c:miniflow_extract_ipv4_pkt_too_short_add Line | Count | Source | 72 | 295 | { \ | 73 | 295 | *counter_##COUNTER##_get() += n; \ | 74 | 295 | } \ |
flow.c:miniflow_extract_ipv4_pkt_len_error_add Line | Count | Source | 72 | 1.93k | { \ | 73 | 1.93k | *counter_##COUNTER##_get() += n; \ | 74 | 1.93k | } \ |
flow.c:miniflow_extract_ipv6_pkt_too_short_add Line | Count | Source | 72 | 347 | { \ | 73 | 347 | *counter_##COUNTER##_get() += n; \ | 74 | 347 | } \ |
flow.c:miniflow_extract_ipv6_pkt_len_error_add Line | Count | Source | 72 | 1.82k | { \ | 73 | 1.82k | *counter_##COUNTER##_get() += n; \ | 74 | 1.82k | } \ |
flow.c:miniflow_malloc_add Line | Count | Source | 72 | 107k | { \ | 73 | 107k | *counter_##COUNTER##_get() += n; \ | 74 | 107k | } \ |
Unexecuted instantiation: netdev.c:netdev_received_add Unexecuted instantiation: netdev.c:netdev_send_prepare_drops_add Unexecuted instantiation: netdev.c:netdev_sent_add Unexecuted instantiation: netdev.c:netdev_push_header_drops_add Unexecuted instantiation: netdev.c:netdev_add_router_add Unexecuted instantiation: netdev.c:netdev_get_stats_add Unexecuted instantiation: poll-loop.c:poll_create_node_add Unexecuted instantiation: poll-loop.c:poll_zero_timeout_add Unexecuted instantiation: seq.c:seq_change_add Unexecuted instantiation: unixctl.c:unixctl_replied_add Unexecuted instantiation: unixctl.c:unixctl_received_add Unexecuted instantiation: netdev-linux.c:netdev_set_hwaddr_add Unexecuted instantiation: netdev-linux.c:netdev_get_hwaddr_add Unexecuted instantiation: netdev-linux.c:netdev_set_policing_add Unexecuted instantiation: netdev-linux.c:netdev_arp_lookup_add Unexecuted instantiation: netdev-linux.c:netdev_get_ethtool_add Unexecuted instantiation: netdev-linux.c:netdev_set_ethtool_add Unexecuted instantiation: netdev-linux.c:netdev_get_ifindex_add Unexecuted instantiation: netlink-socket.c:netlink_sent_add Unexecuted instantiation: netlink-socket.c:netlink_overflow_add Unexecuted instantiation: netlink-socket.c:netlink_recv_jumbo_add Unexecuted instantiation: netlink-socket.c:netlink_received_add Unexecuted instantiation: ccmap.c:ccmap_expand_add Unexecuted instantiation: ccmap.c:ccmap_shrink_add Unexecuted instantiation: cmap.c:cmap_expand_add Unexecuted instantiation: cmap.c:cmap_shrink_add Unexecuted instantiation: dpif.c:dpif_destroy_add Unexecuted instantiation: dpif.c:dpif_port_add_add Unexecuted instantiation: dpif.c:dpif_port_del_add Unexecuted instantiation: dpif.c:dpif_flow_flush_add Unexecuted instantiation: dpif.c:dpif_flow_put_add Unexecuted instantiation: dpif.c:dpif_flow_get_add Unexecuted instantiation: dpif.c:dpif_flow_del_add Unexecuted instantiation: dpif.c:dpif_execute_add Unexecuted instantiation: dpif.c:dpif_execute_with_help_add Unexecuted instantiation: dpif.c:dpif_purge_add Unexecuted instantiation: dpif.c:dpif_meter_set_add Unexecuted instantiation: dpif.c:dpif_meter_get_add Unexecuted instantiation: dpif.c:dpif_meter_del_add Line | Count | Source | 72 | 4.81k | { \ | 73 | 4.81k | *counter_##COUNTER##_get() += n; \ | 74 | 4.81k | } \ |
hmap.c:hmap_pathological_add Line | Count | Source | 72 | 717 | { \ | 73 | 717 | *counter_##COUNTER##_get() += n; \ | 74 | 717 | } \ |
Unexecuted instantiation: hmap.c:hmap_shrink_add Unexecuted instantiation: hmap.c:hmap_reserve_add Unexecuted instantiation: odp-execute.c:datapath_drop_sample_error_add Unexecuted instantiation: odp-execute.c:datapath_drop_nsh_decap_error_add Unexecuted instantiation: odp-execute.c:drop_action_of_pipeline_add Unexecuted instantiation: odp-execute.c:drop_action_bridge_not_found_add Unexecuted instantiation: odp-execute.c:drop_action_recursion_too_deep_add Unexecuted instantiation: odp-execute.c:drop_action_too_many_resubmit_add Unexecuted instantiation: odp-execute.c:drop_action_stack_too_deep_add Unexecuted instantiation: odp-execute.c:drop_action_no_recirculation_context_add Unexecuted instantiation: odp-execute.c:drop_action_recirculation_conflict_add Unexecuted instantiation: odp-execute.c:drop_action_too_many_mpls_labels_add Unexecuted instantiation: odp-execute.c:drop_action_invalid_tunnel_metadata_add Unexecuted instantiation: odp-execute.c:drop_action_unsupported_packet_type_add Unexecuted instantiation: odp-execute.c:drop_action_congestion_add Unexecuted instantiation: odp-execute.c:drop_action_forwarding_disabled_add Unexecuted instantiation: stream.c:stream_open_add Unexecuted instantiation: stream.c:pstream_open_add Unexecuted instantiation: netlink-notifier.c:nln_changed_add Unexecuted instantiation: conntrack.c:conntrack_l3csum_err_add Unexecuted instantiation: conntrack.c:conntrack_lookup_natted_miss_add Unexecuted instantiation: conntrack.c:conntrack_full_add Unexecuted instantiation: conntrack.c:conntrack_l4csum_err_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_rx_invalid_packet_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_upcall_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_lock_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_port_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_bond_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_tunnel_push_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_tunnel_pop_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_invalid_tnl_port_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_recirc_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_userspace_action_error_add Unexecuted instantiation: dpif-netdev.c:datapath_drop_meter_add Unexecuted instantiation: hindex.c:hindex_expand_add Unexecuted instantiation: hindex.c:hindex_shrink_add Unexecuted instantiation: hindex.c:hindex_reserve_add Unexecuted instantiation: hindex.c:hindex_pathological_add Unexecuted instantiation: ipf.c:ipf_l3csum_err_add Unexecuted instantiation: ipf.c:ipf_stuck_frag_list_purged_add Unexecuted instantiation: conntrack-tcp.c:conntrack_invalid_tcp_flags_add Unexecuted instantiation: conntrack-tcp.c:conntrack_tcp_seq_chk_bypass_add Unexecuted instantiation: conntrack-tcp.c:conntrack_tcp_seq_chk_failed_add Unexecuted instantiation: ovsdb-idl.c:txn_uncommitted_add Unexecuted instantiation: ovsdb-idl.c:txn_unchanged_add Unexecuted instantiation: ovsdb-idl.c:txn_incomplete_add Unexecuted instantiation: ovsdb-idl.c:txn_aborted_add Unexecuted instantiation: ovsdb-idl.c:txn_success_add Unexecuted instantiation: ovsdb-idl.c:txn_try_again_add Unexecuted instantiation: ovsdb-idl.c:txn_not_locked_add Unexecuted instantiation: ovsdb-idl.c:txn_error_add |
75 | | extern struct coverage_counter counter_##COUNTER; \ |
76 | | struct coverage_counter counter_##COUNTER \ |
77 | | = { #COUNTER, COUNTER##_count, 0, 0, {0}, {0} }; \ |
78 | 1.01k | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ |
79 | 1.01k | coverage_counter_register(&counter_##COUNTER); \ |
80 | 1.01k | } util.c:util_xalloc_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
flow.c:flow_extract_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
flow.c:miniflow_extract_ipv4_pkt_len_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
flow.c:miniflow_extract_ipv4_pkt_too_short_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
flow.c:miniflow_extract_ipv6_pkt_len_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
flow.c:miniflow_extract_ipv6_pkt_too_short_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
flow.c:miniflow_malloc_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_received_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_sent_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_add_router_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_get_stats_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_send_prepare_drops_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev.c:netdev_push_header_drops_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
poll-loop.c:poll_create_node_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
poll-loop.c:poll_zero_timeout_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
seq.c:seq_change_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
unixctl.c:unixctl_received_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
unixctl.c:unixctl_replied_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
netdev-linux.c:netdev_set_policing_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_arp_lookup_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_get_ifindex_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_get_hwaddr_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_set_hwaddr_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_get_ethtool_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netdev-linux.c:netdev_set_ethtool_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netlink-socket.c:netlink_overflow_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netlink-socket.c:netlink_received_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netlink-socket.c:netlink_recv_jumbo_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
netlink-socket.c:netlink_sent_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ccmap.c:ccmap_expand_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ccmap.c:ccmap_shrink_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
cmap.c:cmap_expand_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
cmap.c:cmap_shrink_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_destroy_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_port_add_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_port_del_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_flow_flush_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_flow_get_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_flow_put_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_flow_del_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_execute_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_purge_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_execute_with_help_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_meter_set_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_meter_get_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif.c:dpif_meter_del_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
hmap.c:hmap_pathological_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
hmap.c:hmap_expand_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
hmap.c:hmap_shrink_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
hmap.c:hmap_reserve_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
odp-execute.c:datapath_drop_sample_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:datapath_drop_nsh_decap_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_of_pipeline_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_bridge_not_found_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_recursion_too_deep_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_too_many_resubmit_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_stack_too_deep_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_no_recirculation_context_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_recirculation_conflict_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_too_many_mpls_labels_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_invalid_tunnel_metadata_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_unsupported_packet_type_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_congestion_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
odp-execute.c:drop_action_forwarding_disabled_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
stream.c:pstream_open_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
stream.c:stream_open_init_coverage Line | Count | Source | 78 | 12 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 12 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 12 | } |
netlink-notifier.c:nln_changed_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack.c:conntrack_full_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack.c:conntrack_l3csum_err_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack.c:conntrack_l4csum_err_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack.c:conntrack_lookup_natted_miss_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_meter_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_upcall_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_lock_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_userspace_action_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_tunnel_push_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_tunnel_pop_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_recirc_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_invalid_port_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_invalid_bond_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_invalid_tnl_port_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
dpif-netdev.c:datapath_drop_rx_invalid_packet_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
hindex.c:hindex_pathological_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
hindex.c:hindex_expand_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
hindex.c:hindex_shrink_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
hindex.c:hindex_reserve_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ipf.c:ipf_stuck_frag_list_purged_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ipf.c:ipf_l3csum_err_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack-tcp.c:conntrack_tcp_seq_chk_bypass_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack-tcp.c:conntrack_tcp_seq_chk_failed_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
conntrack-tcp.c:conntrack_invalid_tcp_flags_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_uncommitted_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_unchanged_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_incomplete_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_aborted_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_success_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_try_again_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_not_locked_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
ovsdb-idl.c:txn_error_init_coverage Line | Count | Source | 78 | 10 | OVS_CONSTRUCTOR(COUNTER##_init_coverage) { \ | 79 | 10 | coverage_counter_register(&counter_##COUNTER); \ | 80 | 10 | } |
|
81 | | |
82 | | /* Adds 1 to COUNTER. */ |
83 | 44.6M | #define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1) |
84 | | |
85 | | /* Adds AMOUNT to COUNTER. */ |
86 | 44.6M | #define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT) |
87 | | |
88 | | void coverage_init(void); |
89 | | void coverage_log(void); |
90 | | void coverage_clear(void); |
91 | | void coverage_try_clear(void); |
92 | | void coverage_run(void); |
93 | | |
94 | | #endif /* coverage.h */ |