1 | /** $Id: counters.h 22458 2009-08-26 09:11:26Z 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-2009 Sun Microsystems, Inc.
|
---|
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 | * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
|
---|
22 | * Clara, CA 95054 USA or visit http://www.sun.com if you need
|
---|
23 | * additional information or have any questions.
|
---|
24 | */
|
---|
25 |
|
---|
26 | /*
|
---|
27 | * COUNTERS_INIT is used before using counters.h to declare helping macro
|
---|
28 | * definitions for (de-)registering counters
|
---|
29 | */
|
---|
30 | #ifndef COUNTERS_H
|
---|
31 | # define COUNTERS_H
|
---|
32 | # if defined(VBOX_WITH_STATISTICS)
|
---|
33 | # define REGISTER_COUNTER(name, storage, type, units, dsc) \
|
---|
34 | do { \
|
---|
35 | PDMDrvHlpSTAMRegisterF(pDrvIns, \
|
---|
36 | &(storage)->Stat ## name, \
|
---|
37 | type, \
|
---|
38 | STAMVISIBILITY_ALWAYS, \
|
---|
39 | units, \
|
---|
40 | dsc, \
|
---|
41 | "/Drivers/NAT%u/" #name, \
|
---|
42 | pDrvIns->iInstance); \
|
---|
43 | } while (0)
|
---|
44 | # define DEREGISTER_COUNTER(name, storage) PDMDrvHlpSTAMDeregister(pDrvIns, &(storage)->Stat ## name)
|
---|
45 | # else
|
---|
46 | # define REGISTER_COUNTER(name, storage, type, units, dsc) do {} while (0)
|
---|
47 | # define DEREGISTER_COUNTER(name, storage) do {} while (0)
|
---|
48 | # endif
|
---|
49 | #else
|
---|
50 | # undef COUNTERS_INIT
|
---|
51 | #endif
|
---|
52 |
|
---|
53 | #ifndef COUNTERS_INIT
|
---|
54 | # if !defined(PROFILE_COUNTER) && !defined(DRV_PROFILE_COUNTER)
|
---|
55 | # error (DRV_)PROFILE_COUNTER is not defied
|
---|
56 | # endif
|
---|
57 | # if !defined(COUNTING_COUNTER) && !defined(DRV_COUNTING_COUNTER)
|
---|
58 | # error (DRV_)COUNTING_COUNTER is not defined
|
---|
59 | # endif
|
---|
60 |
|
---|
61 | /*
|
---|
62 | * DRV_ prefixed are counters used in DrvNAT the rest are used in Slirp
|
---|
63 | */
|
---|
64 |
|
---|
65 | # if defined(PROFILE_COUNTER) || defined(COUNTING_COUNTER)
|
---|
66 | PROFILE_COUNTER(Fill, "Profiling slirp fills");
|
---|
67 | PROFILE_COUNTER(Poll, "Profiling slirp polls");
|
---|
68 | PROFILE_COUNTER(FastTimer, "Profiling slirp fast timer");
|
---|
69 | PROFILE_COUNTER(SlowTimer, "Profiling slirp slow timer");
|
---|
70 | PROFILE_COUNTER(IOwrite, "Profiling IO sowrite");
|
---|
71 | PROFILE_COUNTER(IOread, "Profiling IO soread");
|
---|
72 |
|
---|
73 | COUNTING_COUNTER(TCP, "TCP sockets");
|
---|
74 | COUNTING_COUNTER(TCPHot, "TCP sockets active");
|
---|
75 | COUNTING_COUNTER(UDP, "UDP sockets");
|
---|
76 | COUNTING_COUNTER(UDPHot, "UDP sockets active");
|
---|
77 |
|
---|
78 | COUNTING_COUNTER(IORead_in_1, "SB IORead_in_1");
|
---|
79 | COUNTING_COUNTER(IORead_in_1_bytes, "SB IORead_in_1_bytes");
|
---|
80 | COUNTING_COUNTER(IORead_in_2, "SB IORead_in_2");
|
---|
81 | COUNTING_COUNTER(IORead_in_2_1st_bytes, "SB IORead_in_2_1st_bytes");
|
---|
82 | COUNTING_COUNTER(IORead_in_2_2nd_bytes, "SB IORead_in_2_2nd_bytes");
|
---|
83 | COUNTING_COUNTER(IOWrite_in_1, "SB IOWrite_in_1");
|
---|
84 | COUNTING_COUNTER(IOWrite_in_1_bytes, "SB IOWrite_in_1_bytes");
|
---|
85 | COUNTING_COUNTER(IOWrite_in_2, "SB IOWrite_in_2");
|
---|
86 | COUNTING_COUNTER(IOWrite_in_2_1st_bytes, "SB IOWrite_in_2_1st_bytes");
|
---|
87 | COUNTING_COUNTER(IOWrite_in_2_2nd_bytes, "SB IOWrite_in_2_2nd_bytes");
|
---|
88 | COUNTING_COUNTER(IOWrite_no_w, "SB IOWrite_no_w");
|
---|
89 | COUNTING_COUNTER(IOWrite_rest, "SB IOWrite_rest");
|
---|
90 | COUNTING_COUNTER(IOWrite_rest_bytes, "SB IOWrite_rest_bytes");
|
---|
91 |
|
---|
92 | PROFILE_COUNTER(IOSBAppend_pf, "Profiling sbuf::append common");
|
---|
93 | PROFILE_COUNTER(IOSBAppend_pf_wa, "Profiling sbuf::append all writen in network");
|
---|
94 | PROFILE_COUNTER(IOSBAppend_pf_wf, "Profiling sbuf::append writen fault");
|
---|
95 | PROFILE_COUNTER(IOSBAppend_pf_wp, "Profiling sbuf::append writen partly");
|
---|
96 | COUNTING_COUNTER(IOSBAppend, "SB: Append total");
|
---|
97 | COUNTING_COUNTER(IOSBAppend_wa, "SB: Append all is written to network ");
|
---|
98 | COUNTING_COUNTER(IOSBAppend_wf, "SB: Append nothing is written");
|
---|
99 | COUNTING_COUNTER(IOSBAppend_wp, "SB: Append is written partly");
|
---|
100 | COUNTING_COUNTER(IOSBAppend_zm, "SB: Append mbuf is zerro or less");
|
---|
101 |
|
---|
102 | COUNTING_COUNTER(IOSBAppendSB, "SB: AppendSB total");
|
---|
103 | COUNTING_COUNTER(IOSBAppendSB_w_l_r, "SB: AppendSB (sb_wptr < sb_rptr)");
|
---|
104 | COUNTING_COUNTER(IOSBAppendSB_w_ge_r, "SB: AppendSB (sb_wptr >= sb_rptr)");
|
---|
105 | COUNTING_COUNTER(IOSBAppendSB_w_alter, "SB: AppendSB (altering of sb_wptr)");
|
---|
106 |
|
---|
107 | COUNTING_COUNTER(TCP_retransmit, "TCP::retransmit");
|
---|
108 |
|
---|
109 | PROFILE_COUNTER(TCP_reassamble, "TCP::reasamble");
|
---|
110 | PROFILE_COUNTER(TCP_input, "TCP::input");
|
---|
111 | PROFILE_COUNTER(IP_input, "IP::input");
|
---|
112 | PROFILE_COUNTER(IP_output, "IP::output");
|
---|
113 | PROFILE_COUNTER(IF_encap, "IF::encap");
|
---|
114 | PROFILE_COUNTER(ALIAS_input, "ALIAS::input");
|
---|
115 | PROFILE_COUNTER(ALIAS_output, "ALIAS::output");
|
---|
116 |
|
---|
117 | # else
|
---|
118 | /*DrvNAT.cpp*/
|
---|
119 | # ifdef SLIRP_SPLIT_CAN_OUTPUT
|
---|
120 | DRV_COUNTING_COUNTER(NATRecvWakeups, "counting wakeups of NAT RX thread");
|
---|
121 | DRV_PROFILE_COUNTER(NATRecv,"Time spent in NATRecv worker");
|
---|
122 | DRV_PROFILE_COUNTER(NATRecvWait,"Time spent in NATRecv worker in waiting of free RX buffers");
|
---|
123 | # endif
|
---|
124 | DRV_COUNTING_COUNTER(QueuePktSent, "counting packet sent via PDM Queue");
|
---|
125 | DRV_COUNTING_COUNTER(QueuePktDropped, "counting packet drops by PDM Queue");
|
---|
126 | DRV_COUNTING_COUNTER(ConsumerFalse, "counting consumer's reject number to process the queue's item");
|
---|
127 | # endif
|
---|
128 | #endif /*!COUNTERS_INIT*/
|
---|
129 |
|
---|
130 | #ifdef DRV_COUNTING_COUNTER
|
---|
131 | # undef DRV_COUNTING_COUNTER
|
---|
132 | #endif
|
---|
133 |
|
---|
134 | #ifdef DRV_PROFILE_COUNTER
|
---|
135 | # undef DRV_PROFILE_COUNTER
|
---|
136 | #endif
|
---|
137 |
|
---|
138 | #ifdef COUNTING_COUNTER
|
---|
139 | # undef COUNTING_COUNTER
|
---|
140 | #endif
|
---|
141 |
|
---|
142 | #ifdef PROFILE_COUNTER
|
---|
143 | # undef PROFILE_COUNTER
|
---|
144 | #endif
|
---|