*/
void
-dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
+dns_opcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp);
/*%<
- * Create a statistics counter structure per opcode.
+ * Create a statistics counter structure per opcode using statsmulti.
*
* Requires:
*\li 'mctx' must be a valid memory context.
*/
void
-dns_opcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
+dns_opcodestats_increment(isc_statsmulti_t *stats, dns_opcode_t code);
/*%<
* Increment the statistics counter for 'code'.
*
* Requires:
- *\li 'stats' is a valid dns_stats_t created by dns_opcodestats_create().
+ *\li 'stats' is a valid isc_statsmulti_t created by dns_opcodestats_create().
*/
void
*/
void
-dns_opcodestats_dump(dns_stats_t *stats, dns_opcodestats_dumper_t dump_fn,
+dns_opcodestats_dump(isc_statsmulti_t *stats, dns_opcodestats_dumper_t dump_fn,
void *arg, unsigned int options);
/*%<
* Dump the current statistics counters in a specified way. For each counter
* such counters are dumped.
*
* Requires:
- *\li 'stats' is a valid dns_stats_t created by dns_generalstats_create().
+ *\li 'stats' is a valid isc_statsmulti_t created by dns_opcodestats_create().
*/
void
}
void
-dns_opcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp) {
+dns_opcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp) {
REQUIRE(statsp != NULL && *statsp == NULL);
- create_stats(mctx, dns_statstype_opcode, 16, statsp);
+ /*
+ * Create opcode statistics using statsmulti for better multithreading performance.
+ * We need 16 counters for DNS opcodes (0-15), all are additive.
+ */
+ isc_statsmulti_create(mctx, statsp, 16, 0);
}
void
}
void
-dns_opcodestats_increment(dns_stats_t *stats, dns_opcode_t code) {
- REQUIRE(DNS_STATS_VALID(stats) && stats->type == dns_statstype_opcode);
+dns_opcodestats_increment(isc_statsmulti_t *stats, dns_opcode_t code) {
+ REQUIRE(stats != NULL);
- isc_stats_increment(stats->counters, (isc_statscounter_t)code);
+ isc_statsmulti_increment(stats, (isc_statscounter_t)code);
}
void
}
void
-dns_opcodestats_dump(dns_stats_t *stats, dns_opcodestats_dumper_t dump_fn,
+dns_opcodestats_dump(isc_statsmulti_t *stats, dns_opcodestats_dumper_t dump_fn,
void *arg0, unsigned int options) {
opcodedumparg_t arg;
- REQUIRE(DNS_STATS_VALID(stats) && stats->type == dns_statstype_opcode);
+ REQUIRE(stats != NULL);
arg.fn = dump_fn;
arg.arg = arg0;
- isc_stats_dump(stats->counters, opcode_dumpcb, &arg, options);
+ isc_statsmulti_dump(stats, opcode_dumpcb, &arg, options);
}
void
isc_statsmulti_detach(&sctx->rcvquerystats);
}
if (sctx->opcodestats != NULL) {
- dns_stats_detach(&sctx->opcodestats);
+ isc_statsmulti_detach(&sctx->opcodestats);
}
if (sctx->rcodestats != NULL) {
dns_stats_detach(&sctx->rcodestats);