]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/arm/processor_info.h
xnu-7195.101.1.tar.gz
[apple/xnu.git] / osfmk / mach / arm / processor_info.h
index 67f9df9b840350f4dc2d1851d0816e9b446bd17a..8f311b3280e03a02dd912dd9f4c5da522635f5ed 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * 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_START@
  *
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
-/*
- * FILE_ID: processor_info.h
- */
 
 #ifndef _MACH_ARM_PROCESSOR_INFO_H_
 #define _MACH_ARM_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 {
 
 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_ */
 
 #endif /* _MACH_ARM_PROCESSOR_INFO_H_ */