[DTrace-devel] [PATCH 28/61] Complete the conversion of DTRACEAGG_* enums to DT_AGG_* enums

eugene.loh at oracle.com eugene.loh at oracle.com
Fri Jul 8 14:45:12 UTC 2022


From: Eugene Loh <eugene.loh at oracle.com>

In commit 85c8512318e3
("Implement the support code for generating aggregation data"),
the enums DT_AGG_* were introduced.

In commit ecbe2271e2bb
("Implementation of the printa() action"),
the DT_AGG_* were rebased to be offset from DTRACEACT_AGGREGATION.

In commit ecbe2271e2bb
("Implementation of the printa() action"),
the older DTRACEAGG_* enums that remained were said to be replaced
by the newer DT_AGG_*.

In fact, however, instances of DTRACEAGG_* remained.  This was an
issue since the enums were defined in different orders, causing
corresponding values such as DT_AGG_QUANTIZE and DTRACEAGG_QUANTIZE
to disagree.  These problems were in code that was not yet active --
e.g., to print two quantize() results for the same aggregation variable
but with different keys.

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 include/dtrace/actions_defines.h |  9 ---------
 libdtrace/dt_aggregate.c         | 20 ++++++++++----------
 libdtrace/dt_cc.c                |  6 +++---
 libdtrace/dt_printf.c            |  2 +-
 4 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/include/dtrace/actions_defines.h b/include/dtrace/actions_defines.h
index 3dcf25cf..a58cec68 100644
--- a/include/dtrace/actions_defines.h
+++ b/include/dtrace/actions_defines.h
@@ -97,15 +97,6 @@
  */
 
 #define DTRACEACT_AGGREGATION		0x0700
-#define DTRACEAGG_COUNT			(DTRACEACT_AGGREGATION + 1)
-#define DTRACEAGG_MIN			(DTRACEACT_AGGREGATION + 2)
-#define DTRACEAGG_MAX			(DTRACEACT_AGGREGATION + 3)
-#define DTRACEAGG_AVG			(DTRACEACT_AGGREGATION + 4)
-#define DTRACEAGG_SUM			(DTRACEACT_AGGREGATION + 5)
-#define DTRACEAGG_STDDEV		(DTRACEACT_AGGREGATION + 6)
-#define DTRACEAGG_QUANTIZE		(DTRACEACT_AGGREGATION + 7)
-#define DTRACEAGG_LQUANTIZE		(DTRACEACT_AGGREGATION + 8)
-#define DTRACEAGG_LLQUANTIZE		(DTRACEACT_AGGREGATION + 9)
 
 #define DTRACE_QUANTIZE_NBUCKETS		\
 		(((sizeof(uint64_t) * NBBY) - 1) * 2 + 1)
diff --git a/libdtrace/dt_aggregate.c b/libdtrace/dt_aggregate.c
index 1b875ea8..4a675366 100644
--- a/libdtrace/dt_aggregate.c
+++ b/libdtrace/dt_aggregate.c
@@ -803,30 +803,30 @@ dt_aggregate_valcmp(const void *lhs, const void *rhs)
 	raddr = (int64_t *)(uintptr_t)(rdata + rrec->dtrd_offset);
 
 	switch (lrec->dtrd_action) {
-	case DTRACEAGG_AVG:
+	case DT_AGG_AVG:
 		rval = dt_aggregate_averagecmp(laddr, raddr);
 		break;
 
-	case DTRACEAGG_STDDEV:
+	case DT_AGG_STDDEV:
 		rval = dt_aggregate_stddevcmp(laddr, raddr);
 		break;
 
-	case DTRACEAGG_QUANTIZE:
+	case DT_AGG_QUANTIZE:
 		rval = dt_aggregate_quantizedcmp(laddr, raddr);
 		break;
 
-	case DTRACEAGG_LQUANTIZE:
+	case DT_AGG_LQUANTIZE:
 		rval = dt_aggregate_lquantizedcmp(laddr, raddr);
 		break;
 
-	case DTRACEAGG_LLQUANTIZE:
+	case DT_AGG_LLQUANTIZE:
 		rval = dt_aggregate_llquantizedcmp(laddr, raddr);
 		break;
 
-	case DTRACEAGG_COUNT:
-	case DTRACEAGG_SUM:
-	case DTRACEAGG_MIN:
-	case DTRACEAGG_MAX:
+	case DT_AGG_COUNT:
+	case DT_AGG_SUM:
+	case DT_AGG_MIN:
+	case DT_AGG_MAX:
 		rval = dt_aggregate_countcmp(laddr, raddr);
 		break;
 
@@ -1094,7 +1094,7 @@ dt_aggwalk_rval(dtrace_hdl_t *dtp, dt_ahashent_t *h, int rval)
 		size = rec->dtrd_size;
 		data = &h->dtahe_data;
 
-		if (rec->dtrd_action == DTRACEAGG_LQUANTIZE) {
+		if (rec->dtrd_action == DT_AGG_LQUANTIZE) {
 			offs = sizeof(uint64_t);
 			size -= sizeof(uint64_t);
 		}
diff --git a/libdtrace/dt_cc.c b/libdtrace/dt_cc.c
index 84cd5a9e..e3166647 100644
--- a/libdtrace/dt_cc.c
+++ b/libdtrace/dt_cc.c
@@ -1071,7 +1071,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 		ap->dtad_kind = DTRACEACT_DIFEXPR;
 	}
 
-	if (fid->di_id == DTRACEAGG_LQUANTIZE) {
+	if (fid->di_id == DT_AGG_LQUANTIZE) {
 		/*
 		 * For linear quantization, we have between two and four
 		 * arguments in addition to the expression:
@@ -1206,7 +1206,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 		argmax = 5;
 	}
 
-	if (fid->di_id == DTRACEAGG_LLQUANTIZE) {
+	if (fid->di_id == DT_AGG_LLQUANTIZE) {
 		/*
 		 * For log linear quantization, we have four
 		 * arguments in addition to the expression:
@@ -1388,7 +1388,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 		argmax = 6;
 	}
 
-	if (fid->di_id == DTRACEAGG_QUANTIZE) {
+	if (fid->di_id == DT_AGG_QUANTIZE) {
 		incr = dnp->dn_aggfun->dn_args->dn_list;
 		argmax = 2;
 	}
diff --git a/libdtrace/dt_printf.c b/libdtrace/dt_printf.c
index 7e9c0982..f0c09178 100644
--- a/libdtrace/dt_printf.c
+++ b/libdtrace/dt_printf.c
@@ -983,7 +983,7 @@ dt_printf_validate(dt_pfargv_t *pfv, uint_t flags,
 	 * an aggregation result conversion, which -- for all but count() --
 	 * is a signed quantity.
 	 */
-	if (kind != DTRACEAGG_COUNT)
+	if (kind != DT_AGG_COUNT)
 		aggtype = "int64_t";
 	else
 		aggtype = "uint64_t";
-- 
2.18.4




More information about the DTrace-devel mailing list