#include <IOKit/IOKernelReportStructs.h>
IOKit/IOKernelReportStructs.h
Internal data structures to be used by IOReporters and User Space Observers
macrokIOReportLegendPublicKey
Drivers participating in IOReporting can advertise channels by
publishing properties in the I/O Kit registry. Various helper
mechanisms exist to produce correctly-formatted legends.
12836893 tracks advertising channels in user space.
#define kIOReportLegendPublicKey "IOReportLegendPublic"
bool
macrokIOReportLegendStateNamesKey
#define kIOReportLegendStateNamesKey "IOReportChannelStateNames"
str[]
macrokIOReportChannelIDIdx
in an I/O Kit registry legend, a small "array struct" represents a channel
#define kIOReportChannelIDIdx 0
required
macrokIOHistogramScaleLinear
Histogram Segment Configuration
Currently supports 2 types of scaling to compute bucket upper bounds,
linear or exponential.
scale_flag = 0 -> linear scale
1 -> exponential scale
upper_bound[n] = (scale_flag) ? pow(base,(n+1)) : base * (n+1);
#define kIOHistogramScaleLinear 0
macrokIOHistogramScaleExponential
#define kIOHistogramScaleExponential 1
structIOHistogramSegmentConfig
| uint32_t | base_bucket_width | segment[0].bucket[0] = [0, base_width] |
| uint32_t | scale_flag | bit 0 only in current use (see #defs) |
| uint32_t | segment_idx | for multiple segments histograms |
| uint32_t | segment_bucket_count | number of buckets in this segment |
typedefIOHistogramSegmentConfig
typedef struct IOHistogramSegmentConfig IOHistogramSegmentConfig;
structIONormDistReportValues
"normalized distribution"(FIXME?) internal format (unused?)
| uint64_t | samples | |
| uint64_t | mean | |
| uint64_t | variance | |
| uint64_t | reserved |
typedefIONormDistReportValues
typedef struct IONormDistReportValues IONormDistReportValues;