]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/firehose/tracepoint_private.h
xnu-6153.141.1.tar.gz
[apple/xnu.git] / libkern / firehose / tracepoint_private.h
index a0c7122124aab2aaa668b3a8a599b062861fbf82..f5ad06986e7b0211327deab077e5d19d56d01d8e 100644 (file)
@@ -83,10 +83,10 @@ typedef struct firehose_tracepoint_s {
 
 #define FIREHOSE_TRACE_ID_MAKE(ns, type, flags, code) \
        (((firehose_tracepoint_id_u){ .ftid = { \
-               ._namespace = ns, \
-               ._type = type, \
-               ._flags = flags, \
-               ._code = code, \
+               ._namespace = ns, \
+               ._type = type, \
+               ._flags = flags, \
+               ._code = code, \
        } }).ftid_value)
 
 #define FIREHOSE_TRACE_ID_SET_NS(tid, ns) \
@@ -96,12 +96,12 @@ typedef struct firehose_tracepoint_s {
        ((tid).ftid._type = _firehose_tracepoint_type_##ns##_##type)
 
 #define FIREHOSE_TRACE_ID_PC_STYLE(tid) \
-               ((tid).ftid._flags & _firehose_tracepoint_flags_pc_style_mask)
+               ((tid).ftid._flags & _firehose_tracepoint_flags_pc_style_mask)
 
 #define FIREHOSE_TRACE_ID_SET_PC_STYLE(tid, flag) ({ \
-               firehose_tracepoint_id_u _tmp_tid = (tid); \
-               _tmp_tid.ftid._flags &= ~_firehose_tracepoint_flags_pc_style_mask; \
-               _tmp_tid.ftid._flags |= _firehose_tracepoint_flags_pc_style_##flag; \
+               firehose_tracepoint_id_u _tmp_tid = (tid); \
+               _tmp_tid.ftid._flags &= ~_firehose_tracepoint_flags_pc_style_mask; \
+               _tmp_tid.ftid._flags |= _firehose_tracepoint_flags_pc_style_##flag; \
 })
 
 #define FIREHOSE_TRACE_ID_HAS_FLAG(tid, ns, flag) \
@@ -114,6 +114,21 @@ typedef struct firehose_tracepoint_s {
 #define FIREHOSE_TRACE_ID_SET_CODE(tid, code) \
        ((tid).ftid._code = code)
 
+/*!
+ * @typedef firehose_loss_payload_s
+ *
+ * @abstract
+ * The payload for tracepoints in the loss namespace, generated by the firehose
+ * itself when unreliable tracepoints are lost.
+ */
+typedef struct firehose_loss_payload_s {
+       uint64_t start_stamp; /* may (rarely!) disagree with the tracepoint stamp */
+       uint64_t end_stamp;
+#define FIREHOSE_LOSS_COUNT_WIDTH 6 /* as many bits as can be spared */
+#define FIREHOSE_LOSS_COUNT_MAX ((1u << FIREHOSE_LOSS_COUNT_WIDTH) - 1)
+       uint32_t count;
+} firehose_loss_payload_s, *firehose_loss_payload_t;
+
 __BEGIN_DECLS
 
 #if __has_feature(address_sanitizer)
@@ -142,7 +157,7 @@ static inline uint64_t
 firehose_tracepoint_time(firehose_activity_flags_t flags)
 {
        if (firehose_precise_timestamps_enabled() ||
-                       (flags & firehose_activity_flags_precise_timestamp)) {
+           (flags & firehose_activity_flags_precise_timestamp)) {
                return mach_continuous_time();
        } else {
                return mach_continuous_approximate_time();
@@ -154,10 +169,10 @@ __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
 __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
 void
 firehose_trace_metadata(firehose_stream_t stream, firehose_tracepoint_id_u ftid,
-                       uint64_t stamp, const void* pubdata, size_t publen);
+    uint64_t stamp, const void* pubdata, size_t publen);
 #endif
 __END_DECLS
 
-OS_ASSUME_NONNULL_END
+    OS_ASSUME_NONNULL_END
 
 #endif // __FIREHOSE_FIREHOSE__