kcage_stats
static struct kcage_stats kcage_stats;
#define KCAGE_STAT_INCR(m) kcage_stats.m++
#define KCAGE_STAT_NINCR(m, v) kcage_stats.m += (v)
KCAGE_STAT_INCR(scans[kcage_stats.scan_index].m)
KCAGE_STAT_NINCR(scans[kcage_stats.scan_index].m, v)
#define KCAGE_STAT_SET(m, v) kcage_stats.m = (v)
if (kcage_stats.m == 0) kcage_stats.m = (v)
KCAGE_STAT_SET(scans[kcage_stats.scan_index].m, v)
KCAGE_STAT_SETZ(scans[kcage_stats.scan_index].m, v)
KCAGE_STAT_SET_SCAN(scan_id, kcage_stats.scan_index); \
kcage_stats.scan_index = \
(kcage_stats.scan_index + 1) % KCAGE_STATS_NSCANS; \
kcage_stats.scans[kcage_stats.scan_index] = kcage_stats_scan_zero
kcage_stats.version = KCAGE_STATS_VERSION; \
kcage_stats.size = sizeof (kcage_stats); \
kcage_stats.scan_array_size = KCAGE_STATS_NSCANS; \
kcage_stats.scan_index = 0