/*
- * Copyright (c) 2007 Apple Inc. All rights reserved.
+ * Copyright (c) 2007-2018 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
-/*
- * FILE_ID: processor_info.h
- */
#ifndef _MACH_ARM_PROCESSOR_INFO_H_
#define _MACH_ARM_PROCESSOR_INFO_H_
-#define PROCESSOR_CPU_STAT 0x10000003 /* Low level cpu statistics */
+#define PROCESSOR_CPU_STAT 0x10000003 /* Low-level CPU statistics */
+#define PROCESSOR_CPU_STAT64 0x10000004 /* Low-level CPU statistics, in full 64-bit */
-#include <stdint.h> /* uint32_t */
+#include <stdint.h> /* uint32_t, uint64_t */
struct processor_cpu_stat {
- uint32_t irq_ex_cnt;
- uint32_t ipi_cnt;
- uint32_t timer_cnt;
- uint32_t undef_ex_cnt;
- uint32_t unaligned_cnt;
- uint32_t vfp_cnt;
- uint32_t vfp_shortv_cnt;
- uint32_t data_ex_cnt;
- uint32_t instr_ex_cnt;
+ uint32_t irq_ex_cnt;
+ uint32_t ipi_cnt;
+ uint32_t timer_cnt;
+ uint32_t undef_ex_cnt;
+ uint32_t unaligned_cnt;
+ uint32_t vfp_cnt;
+ uint32_t vfp_shortv_cnt;
+ uint32_t data_ex_cnt;
+ uint32_t instr_ex_cnt;
};
-typedef struct processor_cpu_stat processor_cpu_stat_data_t;
-typedef struct processor_cpu_stat *processor_cpu_stat_t;
-#define PROCESSOR_CPU_STAT_COUNT ((mach_msg_type_number_t) \
- (sizeof(processor_cpu_stat_data_t)/sizeof(natural_t)))
+typedef struct processor_cpu_stat processor_cpu_stat_data_t;
+typedef struct processor_cpu_stat *processor_cpu_stat_t;
+#define PROCESSOR_CPU_STAT_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_cpu_stat_data_t) / sizeof(natural_t)))
+
+struct processor_cpu_stat64 {
+ uint64_t irq_ex_cnt;
+ uint64_t ipi_cnt;
+ uint64_t timer_cnt;
+ uint64_t undef_ex_cnt;
+ uint64_t unaligned_cnt;
+ uint64_t vfp_cnt;
+ uint64_t vfp_shortv_cnt;
+ uint64_t data_ex_cnt;
+ uint64_t instr_ex_cnt;
+ uint64_t pmi_cnt;
+} __attribute__((packed, aligned(4)));
+typedef struct processor_cpu_stat64 processor_cpu_stat64_data_t;
+typedef struct processor_cpu_stat64 *processor_cpu_stat64_t;
+#define PROCESSOR_CPU_STAT64_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_cpu_stat64_data_t) / sizeof(integer_t)))
#endif /* _MACH_ARM_PROCESSOR_INFO_H_ */