diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
commit | f215e02bf85f68d3a6106c2a1f4f7f063f819064 (patch) | |
tree | 6bb5b92c046312c4e95ac2620b10ddf482d3fa8b /src/VBox/Devices/Network/slirp/counters.h | |
parent | Initial commit. (diff) | |
download | virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.tar.xz virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.zip |
Adding upstream version 7.0.14-dfsg.upstream/7.0.14-dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/Devices/Network/slirp/counters.h')
-rw-r--r-- | src/VBox/Devices/Network/slirp/counters.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/VBox/Devices/Network/slirp/counters.h b/src/VBox/Devices/Network/slirp/counters.h new file mode 100644 index 00000000..7caae948 --- /dev/null +++ b/src/VBox/Devices/Network/slirp/counters.h @@ -0,0 +1,149 @@ +/** $Id: counters.h $ */ +/** @file + * Counters macro invocation template. + * + * This is included with different PROFILE_COUNTER and COUNTING_COUNTER + * implementations to instantiate data members, create function prototypes and + * implement these prototypes. + */ + +/* + * Copyright (C) 2007-2023 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +/* + * COUNTERS_INIT is used before using counters.h to declare helping macro + * definitions for (de-)registering counters + */ +#ifndef COUNTERS_H +# define COUNTERS_H +# if defined(VBOX_WITH_STATISTICS) +# define REGISTER_COUNTER(name, storage, type, units, dsc) \ + do { \ + PDMDrvHlpSTAMRegisterF(pDrvIns, \ + &(storage)->Stat ## name, \ + type, \ + STAMVISIBILITY_ALWAYS, \ + units, \ + dsc, \ + "/Drivers/NAT%u/" #name, \ + pDrvIns->iInstance); \ + } while (0) +# define DEREGISTER_COUNTER(name, storage) PDMDrvHlpSTAMDeregister(pDrvIns, &(storage)->Stat ## name) +# else +# define REGISTER_COUNTER(name, storage, type, units, dsc) do {} while (0) +# define DEREGISTER_COUNTER(name, storage) do {} while (0) +# endif +#else +# undef COUNTERS_INIT +#endif + +#ifndef COUNTERS_INIT +# if !defined(PROFILE_COUNTER) && !defined(DRV_PROFILE_COUNTER) +# error (DRV_)PROFILE_COUNTER is not defied +# endif +# if !defined(COUNTING_COUNTER) && !defined(DRV_COUNTING_COUNTER) +# error (DRV_)COUNTING_COUNTER is not defined +# endif + +/* + * DRV_ prefixed are counters used in DrvNAT the rest are used in Slirp + */ + +# if defined(PROFILE_COUNTER) || defined(COUNTING_COUNTER) +PROFILE_COUNTER(Fill, "Profiling slirp fills"); +PROFILE_COUNTER(Poll, "Profiling slirp polls"); +PROFILE_COUNTER(FastTimer, "Profiling slirp fast timer"); +PROFILE_COUNTER(SlowTimer, "Profiling slirp slow timer"); +PROFILE_COUNTER(IOwrite, "Profiling IO sowrite"); +PROFILE_COUNTER(IOread, "Profiling IO soread"); + +COUNTING_COUNTER(TCP, "TCP sockets"); +COUNTING_COUNTER(TCPHot, "TCP sockets active"); +COUNTING_COUNTER(UDP, "UDP sockets"); +COUNTING_COUNTER(UDPHot, "UDP sockets active"); + +COUNTING_COUNTER(IORead_in_1, "SB IORead_in_1"); +COUNTING_COUNTER(IORead_in_1_bytes, "SB IORead_in_1_bytes"); +COUNTING_COUNTER(IORead_in_2, "SB IORead_in_2"); +COUNTING_COUNTER(IORead_in_2_1st_bytes, "SB IORead_in_2_1st_bytes"); +COUNTING_COUNTER(IORead_in_2_2nd_bytes, "SB IORead_in_2_2nd_bytes"); +COUNTING_COUNTER(IOWrite_in_1, "SB IOWrite_in_1"); +COUNTING_COUNTER(IOWrite_in_1_bytes, "SB IOWrite_in_1_bytes"); +COUNTING_COUNTER(IOWrite_in_2, "SB IOWrite_in_2"); +COUNTING_COUNTER(IOWrite_in_2_1st_bytes, "SB IOWrite_in_2_1st_bytes"); +COUNTING_COUNTER(IOWrite_in_2_2nd_bytes, "SB IOWrite_in_2_2nd_bytes"); +COUNTING_COUNTER(IOWrite_no_w, "SB IOWrite_no_w"); +COUNTING_COUNTER(IOWrite_rest, "SB IOWrite_rest"); +COUNTING_COUNTER(IOWrite_rest_bytes, "SB IOWrite_rest_bytes"); + +PROFILE_COUNTER(IOSBAppend_pf, "Profiling sbuf::append common"); +PROFILE_COUNTER(IOSBAppend_pf_wa, "Profiling sbuf::append all writen in network"); +PROFILE_COUNTER(IOSBAppend_pf_wf, "Profiling sbuf::append writen fault"); +PROFILE_COUNTER(IOSBAppend_pf_wp, "Profiling sbuf::append writen partly"); +COUNTING_COUNTER(IOSBAppend, "SB: Append total"); +COUNTING_COUNTER(IOSBAppend_wa, "SB: Append all is written to network "); +COUNTING_COUNTER(IOSBAppend_wf, "SB: Append nothing is written"); +COUNTING_COUNTER(IOSBAppend_wp, "SB: Append is written partly"); +COUNTING_COUNTER(IOSBAppend_zm, "SB: Append mbuf is zerro or less"); + +COUNTING_COUNTER(IOSBAppendSB, "SB: AppendSB total"); +COUNTING_COUNTER(IOSBAppendSB_w_l_r, "SB: AppendSB (sb_wptr < sb_rptr)"); +COUNTING_COUNTER(IOSBAppendSB_w_ge_r, "SB: AppendSB (sb_wptr >= sb_rptr)"); +COUNTING_COUNTER(IOSBAppendSB_w_alter, "SB: AppendSB (altering of sb_wptr)"); +COUNTING_COUNTER(MBufAllocation,"MBUF::shows number of mbufs in used list"); + +COUNTING_COUNTER(TCP_retransmit, "TCP::retransmit"); + +PROFILE_COUNTER(TCP_reassamble, "TCP::reasamble"); +PROFILE_COUNTER(TCP_input, "TCP::input"); +PROFILE_COUNTER(IP_input, "IP::input"); +PROFILE_COUNTER(IP_output, "IP::output"); +PROFILE_COUNTER(IF_encap, "IF::encap"); +PROFILE_COUNTER(ALIAS_input, "ALIAS::input"); +PROFILE_COUNTER(ALIAS_output, "ALIAS::output"); + +# else +/*DrvNAT.cpp*/ +DRV_COUNTING_COUNTER(NATRecvWakeups, "counting wakeups of NAT RX thread"); +DRV_PROFILE_COUNTER(NATRecv,"Time spent in NATRecv worker"); +DRV_PROFILE_COUNTER(NATRecvWait,"Time spent in NATRecv worker in waiting of free RX buffers"); +DRV_COUNTING_COUNTER(QueuePktSent, "counting packet sent via PDM Queue"); +DRV_COUNTING_COUNTER(QueuePktDropped, "counting packet drops by PDM Queue"); +DRV_COUNTING_COUNTER(ConsumerFalse, "counting consumer's reject number to process the queue's item"); +# endif +#endif /*!COUNTERS_INIT*/ + +#ifdef DRV_COUNTING_COUNTER +# undef DRV_COUNTING_COUNTER +#endif + +#ifdef DRV_PROFILE_COUNTER +# undef DRV_PROFILE_COUNTER +#endif + +#ifdef COUNTING_COUNTER +# undef COUNTING_COUNTER +#endif + +#ifdef PROFILE_COUNTER +# undef PROFILE_COUNTER +#endif |