1 | /** $Id: counters.h 93115 2022-01-01 11:31:46Z vboxsync $ */
|
---|
2 | /** @file
|
---|
3 | * Counters macro invocation template.
|
---|
4 | *
|
---|
5 | * This is included with different PROFILE_COUNTER and COUNTING_COUNTER
|
---|
6 | * implementations to instantiate data members, create function prototypes and
|
---|
7 | * implement these prototypes.
|
---|
8 | */
|
---|
9 |
|
---|
10 | /*
|
---|
11 | * Copyright (C) 2007-2022 Oracle Corporation
|
---|
12 | *
|
---|
13 | * This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
14 | * available from http://www.virtualbox.org. This file is free software;
|
---|
15 | * you can redistribute it and/or modify it under the terms of the GNU
|
---|
16 | * General Public License (GPL) as published by the Free Software
|
---|
17 | * Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
18 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
19 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
20 | */
|
---|
21 |
|
---|
22 | /*
|
---|
23 | * COUNTERS_INIT is used before using counters.h to declare helping macro
|
---|
24 | * definitions for (de-)registering counters
|
---|
25 | */
|
---|
26 | #ifndef COUNTERS_H
|
---|
27 | # define COUNTERS_H
|
---|
28 | # if defined(VBOX_WITH_STATISTICS)
|
---|
29 | # define REGISTER_COUNTER(name, storage, type, units, dsc) \
|
---|
30 | do { \
|
---|
31 | PDMDrvHlpSTAMRegisterF(pDrvIns, \
|
---|
32 | &(storage)->Stat ## name, \
|
---|
33 | type, \
|
---|
34 | STAMVISIBILITY_ALWAYS, \
|
---|
35 | units, \
|
---|
36 | dsc, \
|
---|
37 | "/Drivers/NAT%u/" #name, \
|
---|
38 | pDrvIns->iInstance); \
|
---|
39 | } while (0)
|
---|
40 | # define DEREGISTER_COUNTER(name, storage) PDMDrvHlpSTAMDeregister(pDrvIns, &(storage)->Stat ## name)
|
---|
41 | # else
|
---|
42 | # define REGISTER_COUNTER(name, storage, type, units, dsc) do {} while (0)
|
---|
43 | # define DEREGISTER_COUNTER(name, storage) do {} while (0)
|
---|
44 | # endif
|
---|
45 | #else
|
---|
46 | # undef COUNTERS_INIT
|
---|
47 | #endif
|
---|
48 |
|
---|
49 | #ifndef COUNTERS_INIT
|
---|
50 | # if !defined(PROFILE_COUNTER) && !defined(DRV_PROFILE_COUNTER)
|
---|
51 | # error (DRV_)PROFILE_COUNTER is not defied
|
---|
52 | # endif
|
---|
53 | # if !defined(COUNTING_COUNTER) && !defined(DRV_COUNTING_COUNTER)
|
---|
54 | # error (DRV_)COUNTING_COUNTER is not defined
|
---|
55 | # endif
|
---|
56 |
|
---|
57 | /*
|
---|
58 | * DRV_ prefixed are counters used in DrvNAT the rest are used in Slirp
|
---|
59 | */
|
---|
60 |
|
---|
61 | # if defined(PROFILE_COUNTER) || defined(COUNTING_COUNTER)
|
---|
62 | PROFILE_COUNTER(Fill, "Profiling slirp fills");
|
---|
63 | PROFILE_COUNTER(Poll, "Profiling slirp polls");
|
---|
64 | PROFILE_COUNTER(FastTimer, "Profiling slirp fast timer");
|
---|
65 | PROFILE_COUNTER(SlowTimer, "Profiling slirp slow timer");
|
---|
66 | PROFILE_COUNTER(IOwrite, "Profiling IO sowrite");
|
---|
67 | PROFILE_COUNTER(IOread, "Profiling IO soread");
|
---|
68 |
|
---|
69 | COUNTING_COUNTER(TCP, "TCP sockets");
|
---|
70 | COUNTING_COUNTER(TCPHot, "TCP sockets active");
|
---|
71 | COUNTING_COUNTER(UDP, "UDP sockets");
|
---|
72 | COUNTING_COUNTER(UDPHot, "UDP sockets active");
|
---|
73 |
|
---|
74 | COUNTING_COUNTER(IORead_in_1, "SB IORead_in_1");
|
---|
75 | COUNTING_COUNTER(IORead_in_1_bytes, "SB IORead_in_1_bytes");
|
---|
76 | COUNTING_COUNTER(IORead_in_2, "SB IORead_in_2");
|
---|
77 | COUNTING_COUNTER(IORead_in_2_1st_bytes, "SB IORead_in_2_1st_bytes");
|
---|
78 | COUNTING_COUNTER(IORead_in_2_2nd_bytes, "SB IORead_in_2_2nd_bytes");
|
---|
79 | COUNTING_COUNTER(IOWrite_in_1, "SB IOWrite_in_1");
|
---|
80 | COUNTING_COUNTER(IOWrite_in_1_bytes, "SB IOWrite_in_1_bytes");
|
---|
81 | COUNTING_COUNTER(IOWrite_in_2, "SB IOWrite_in_2");
|
---|
82 | COUNTING_COUNTER(IOWrite_in_2_1st_bytes, "SB IOWrite_in_2_1st_bytes");
|
---|
83 | COUNTING_COUNTER(IOWrite_in_2_2nd_bytes, "SB IOWrite_in_2_2nd_bytes");
|
---|
84 | COUNTING_COUNTER(IOWrite_no_w, "SB IOWrite_no_w");
|
---|
85 | COUNTING_COUNTER(IOWrite_rest, "SB IOWrite_rest");
|
---|
86 | COUNTING_COUNTER(IOWrite_rest_bytes, "SB IOWrite_rest_bytes");
|
---|
87 |
|
---|
88 | PROFILE_COUNTER(IOSBAppend_pf, "Profiling sbuf::append common");
|
---|
89 | PROFILE_COUNTER(IOSBAppend_pf_wa, "Profiling sbuf::append all writen in network");
|
---|
90 | PROFILE_COUNTER(IOSBAppend_pf_wf, "Profiling sbuf::append writen fault");
|
---|
91 | PROFILE_COUNTER(IOSBAppend_pf_wp, "Profiling sbuf::append writen partly");
|
---|
92 | COUNTING_COUNTER(IOSBAppend, "SB: Append total");
|
---|
93 | COUNTING_COUNTER(IOSBAppend_wa, "SB: Append all is written to network ");
|
---|
94 | COUNTING_COUNTER(IOSBAppend_wf, "SB: Append nothing is written");
|
---|
95 | COUNTING_COUNTER(IOSBAppend_wp, "SB: Append is written partly");
|
---|
96 | COUNTING_COUNTER(IOSBAppend_zm, "SB: Append mbuf is zerro or less");
|
---|
97 |
|
---|
98 | COUNTING_COUNTER(IOSBAppendSB, "SB: AppendSB total");
|
---|
99 | COUNTING_COUNTER(IOSBAppendSB_w_l_r, "SB: AppendSB (sb_wptr < sb_rptr)");
|
---|
100 | COUNTING_COUNTER(IOSBAppendSB_w_ge_r, "SB: AppendSB (sb_wptr >= sb_rptr)");
|
---|
101 | COUNTING_COUNTER(IOSBAppendSB_w_alter, "SB: AppendSB (altering of sb_wptr)");
|
---|
102 | COUNTING_COUNTER(MBufAllocation,"MBUF::shows number of mbufs in used list");
|
---|
103 |
|
---|
104 | COUNTING_COUNTER(TCP_retransmit, "TCP::retransmit");
|
---|
105 |
|
---|
106 | PROFILE_COUNTER(TCP_reassamble, "TCP::reasamble");
|
---|
107 | PROFILE_COUNTER(TCP_input, "TCP::input");
|
---|
108 | PROFILE_COUNTER(IP_input, "IP::input");
|
---|
109 | PROFILE_COUNTER(IP_output, "IP::output");
|
---|
110 | PROFILE_COUNTER(IF_encap, "IF::encap");
|
---|
111 | PROFILE_COUNTER(ALIAS_input, "ALIAS::input");
|
---|
112 | PROFILE_COUNTER(ALIAS_output, "ALIAS::output");
|
---|
113 |
|
---|
114 | # else
|
---|
115 | /*DrvNAT.cpp*/
|
---|
116 | DRV_COUNTING_COUNTER(NATRecvWakeups, "counting wakeups of NAT RX thread");
|
---|
117 | DRV_PROFILE_COUNTER(NATRecv,"Time spent in NATRecv worker");
|
---|
118 | DRV_PROFILE_COUNTER(NATRecvWait,"Time spent in NATRecv worker in waiting of free RX buffers");
|
---|
119 | DRV_COUNTING_COUNTER(QueuePktSent, "counting packet sent via PDM Queue");
|
---|
120 | DRV_COUNTING_COUNTER(QueuePktDropped, "counting packet drops by PDM Queue");
|
---|
121 | DRV_COUNTING_COUNTER(ConsumerFalse, "counting consumer's reject number to process the queue's item");
|
---|
122 | # endif
|
---|
123 | #endif /*!COUNTERS_INIT*/
|
---|
124 |
|
---|
125 | #ifdef DRV_COUNTING_COUNTER
|
---|
126 | # undef DRV_COUNTING_COUNTER
|
---|
127 | #endif
|
---|
128 |
|
---|
129 | #ifdef DRV_PROFILE_COUNTER
|
---|
130 | # undef DRV_PROFILE_COUNTER
|
---|
131 | #endif
|
---|
132 |
|
---|
133 | #ifdef COUNTING_COUNTER
|
---|
134 | # undef COUNTING_COUNTER
|
---|
135 | #endif
|
---|
136 |
|
---|
137 | #ifdef PROFILE_COUNTER
|
---|
138 | # undef PROFILE_COUNTER
|
---|
139 | #endif
|
---|