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);
 }
 

Reply via email to