2 #include <sys/sysctl.h>
15 static void getstats(uint64_t[]);
17 static struct cx_stat cx_stats[MWAIT_CX_MAX];
18 static int cx_stats_cnt;
23 uint64_t count[MWAIT_CX_MAX], prev_count[MWAIT_CX_MAX];
26 for (i = 0; i < MWAIT_CX_MAX; ++i) {
31 snprintf(name, sizeof(name), "machdep.mwait.C%d.subcnt", i);
34 sysctlbyname(name, &subcnt, &len, NULL, 0);
38 snprintf(cx_stats[cx_stats_cnt].state_name,
39 sizeof(cx_stats[cx_stats_cnt].state_name), "C%d", i);
40 snprintf(cx_stats[cx_stats_cnt].sysctl_name,
41 sizeof(cx_stats[cx_stats_cnt].sysctl_name),
42 "machdep.mwait.C%d.entered", i);
51 for (i = 0; i < cx_stats_cnt; ++i) {
52 printf("%s %-5ju ", cx_stats[i].state_name,
53 (uintmax_t)(count[i] - prev_count[i]));
54 prev_count[i] = count[i];
64 getstats(uint64_t count[])
68 for (i = 0; i < cx_stats_cnt; ++i) {
71 len = sizeof(uint64_t);
72 sysctlbyname(cx_stats[i].sysctl_name, &count[i], &len, NULL, 0);