#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) \
((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) \
#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)
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();
__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__