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