Module Name: src
Committed By: riastradh
Date: Sat Jun 29 02:18:36 UTC 2024
Modified Files:
src/sys/net: if_stats.c if_stats.h
Log Message:
if_stats(9): New dtrace probes on if_statinc/dec/add/sub.
Note: This doesn't apply to if_statinc/dec/add/sub_ref, because we
don't have the ifp passed through. To be done in a separate commit
which also adjusts all drivers.
PR kern/58377
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/net/if_stats.c
cvs rdiff -u -r1.3 -r1.4 src/sys/net/if_stats.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/net/if_stats.c
diff -u src/sys/net/if_stats.c:1.4 src/sys/net/if_stats.c:1.5
--- src/sys/net/if_stats.c:1.4 Tue Jun 29 21:19:58 2021
+++ src/sys/net/if_stats.c Sat Jun 29 02:18:35 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_stats.c,v 1.4 2021/06/29 21:19:58 riastradh Exp $ */
+/* $NetBSD: if_stats.c,v 1.5 2024/06/29 02:18:35 riastradh Exp $ */
/*-
* Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -30,10 +30,12 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_stats.c,v 1.4 2021/06/29 21:19:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_stats.c,v 1.5 2024/06/29 02:18:35 riastradh Exp $");
#include <sys/param.h>
+
#include <sys/mbuf.h>
+#include <sys/sdt.h>
#include <sys/systm.h>
#include <sys/xcall.h>
@@ -41,6 +43,11 @@ __KERNEL_RCSID(0, "$NetBSD: if_stats.c,v
#define IF_STATS_SIZE (sizeof(uint64_t) * IF_NSTATS)
+SDT_PROBE_DEFINE3(sdt, net, interface, stat,
+ "struct ifnet *"/*ifp*/,
+ "if_stat_t"/*stat*/,
+ "int64_t"/*delta*/);
+
/*
* if_stats_init --
* Initialize statistics storage for a network interface.
Index: src/sys/net/if_stats.h
diff -u src/sys/net/if_stats.h:1.3 src/sys/net/if_stats.h:1.4
--- src/sys/net/if_stats.h:1.3 Tue Jun 29 21:19:58 2021
+++ src/sys/net/if_stats.h Sat Jun 29 02:18:35 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_stats.h,v 1.3 2021/06/29 21:19:58 riastradh Exp $ */
+/* $NetBSD: if_stats.h,v 1.4 2024/06/29 02:18:35 riastradh Exp $ */
/*-
* Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -55,42 +55,52 @@ typedef enum {
#ifdef _KERNEL
+#include <sys/sdt.h>
+
+SDT_PROBE_DECLARE(sdt, net, interface, stat);
+
#define IF_STAT_GETREF(ifp) _NET_STAT_GETREF((ifp)->if_stats)
#define IF_STAT_PUTREF(ifp) _NET_STAT_PUTREF((ifp)->if_stats)
static inline void
if_statinc(ifnet_t *ifp, if_stat_t x)
{
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x, +1);
_NET_STATINC((ifp)->if_stats, x);
}
static inline void
if_statinc_ref(net_stat_ref_t nsr, if_stat_t x)
{
+ /* XXX sdt probe needs ifp */
_NET_STATINC_REF(nsr, x);
}
static inline void
if_statdec(ifnet_t *ifp, if_stat_t x)
{
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x, -1);
_NET_STATDEC((ifp)->if_stats, x);
}
static inline void
if_statdec_ref(net_stat_ref_t nsr, if_stat_t x)
{
+ /* XXX sdt probe needs ifp */
_NET_STATDEC_REF(nsr, x);
}
static inline void
if_statadd(ifnet_t *ifp, if_stat_t x, uint64_t v)
{
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x, v);
_NET_STATADD((ifp)->if_stats, x, v);
}
static inline void
if_statadd_ref(net_stat_ref_t nsr, if_stat_t x, uint64_t v)
{
+ /* XXX sdt probe needs ifp */
_NET_STATADD_REF(nsr, x, v);
}
@@ -98,6 +108,8 @@ static inline void
if_statadd2(ifnet_t *ifp, if_stat_t x1, uint64_t v1, if_stat_t x2, uint64_t v2)
{
net_stat_ref_t _nsr_ = IF_STAT_GETREF(ifp);
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x1, v1);
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x2, v2);
_NET_STATADD_REF(_nsr_, x1, v1);
_NET_STATADD_REF(_nsr_, x2, v2);
IF_STAT_PUTREF(ifp);
@@ -106,12 +118,14 @@ if_statadd2(ifnet_t *ifp, if_stat_t x1,
static inline void
if_statsub(ifnet_t *ifp, if_stat_t x, uint64_t v)
{
+ SDT_PROBE3(sdt, net, interface, stat, ifp, x, -v);
_NET_STATSUB((ifp)->if_stats, x, v);
}
static inline void
if_statsub_ref(net_stat_ref_t nsr, if_stat_t x, uint64_t v)
{
+ /* XXX sdt probe needs ifp */
_NET_STATSUB_REF(nsr, x, v);
}