hwlat_data
} hwlat_data = {
if (hwlat_data.thread_mode == MODE_PER_CPU)
u64 sample_width = READ_ONCE(hwlat_data.sample_width);
s.seqnum = atomic64_inc_return(&hwlat_data.count);
hwlat_data.thread_mode = MODE_NONE;
if (hwlat_data.thread_mode == MODE_ROUND_ROBIN)
mutex_lock(&hwlat_data.lock);
interval = hwlat_data.sample_window - hwlat_data.sample_width;
mutex_unlock(&hwlat_data.lock);
if (hwlat_data.thread_mode == MODE_ROUND_ROBIN) {
mutex_lock(&hwlat_data.lock);
if (!hwlat_busy || hwlat_data.thread_mode != MODE_PER_CPU)
mutex_unlock(&hwlat_data.lock);
mutex_lock(&hwlat_data.lock);
if (mode == hwlat_data.thread_mode)
mutex_unlock(&hwlat_data.lock);
mutex_lock(&hwlat_data.lock);
hwlat_data.thread_mode = i;
mutex_unlock(&hwlat_data.lock);
.lock = &hwlat_data.lock,
.val = &hwlat_data.sample_width,
.max = &hwlat_data.sample_window,
.lock = &hwlat_data.lock,
.val = &hwlat_data.sample_window,
.min = &hwlat_data.sample_width,
if (hwlat_data.thread_mode == MODE_PER_CPU)
if (hwlat_data.thread_mode == MODE_PER_CPU)
atomic64_set(&hwlat_data.count, 0);
mutex_init(&hwlat_data.lock);