X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/813fb2f63a553c957e917ede5f119b021d6ce391..c6bf4f310a33a9262d455ea4d3f0630b1255e3fe:/libkern/firehose/tracepoint_private.h diff --git a/libkern/firehose/tracepoint_private.h b/libkern/firehose/tracepoint_private.h index a0c712212..f5ad06986 100644 --- a/libkern/firehose/tracepoint_private.h +++ b/libkern/firehose/tracepoint_private.h @@ -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__