- OSObject * owner; /* The owner of the statistics; currently always an IOIES or a subclass of it */
- queue_chain_t chain;
- /*
- * We have no guarantee that the owner will not temporarily mutate its index value (i.e, in setWorkLoop
- * for IOIES). To ensure we can properly recalculate our own identity (and our channel IDs for the
- * reporter), stash the index we set up the reporter with here.
- *
- * Note that we should never remap the interrupt (point it to a different specifier). The mutation of
- * the index value is usually to negate it; I am uncertain of the reason for this at the moment. The
- * practical impact being that we should never need to update the stashed index value; it should stay
- * valid for the lifetime of the owner.
- */
- int interruptIndex;
-
- /*
- * As long as we are based on the simple reporter, all our channels will be 64 bits. Align the data
- * to allow for safe atomic updates (we don't want to cross a cache line on any platform, but for some
- * it would cause a panic).
- */
- volatile uint64_t interruptStatistics[IA_NUM_INTERRUPT_ACCOUNTING_STATISTICS] __attribute__((aligned(8)));
+ OSObject * owner; /* The owner of the statistics; currently always an IOIES or a subclass of it */
+ queue_chain_t chain;
+ /*
+ * We have no guarantee that the owner will not temporarily mutate its index value (i.e, in setWorkLoop
+ * for IOIES). To ensure we can properly recalculate our own identity (and our channel IDs for the
+ * reporter), stash the index we set up the reporter with here.
+ *
+ * Note that we should never remap the interrupt (point it to a different specifier). The mutation of
+ * the index value is usually to negate it; I am uncertain of the reason for this at the moment. The
+ * practical impact being that we should never need to update the stashed index value; it should stay
+ * valid for the lifetime of the owner.
+ */
+ int interruptIndex;
+
+ bool enablePrimaryTimestamp;
+ volatile uint64_t primaryTimestamp __attribute__((aligned(8)));
+
+ /*
+ * As long as we are based on the simple reporter, all our channels will be 64 bits. Align the data
+ * to allow for safe atomic updates (we don't want to cross a cache line on any platform, but for some
+ * it would cause a panic).
+ */
+ volatile uint64_t interruptStatistics[IA_NUM_INTERRUPT_ACCOUNTING_STATISTICS] __attribute__((aligned(8)));