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