// SPDX-License-Identifier: GPL-2.0/* * Copyright (C) 2021 Red Hat Inc, Daniel Bristot de Oliveira <bristot@kernel.org> */#define _GNU_SOURCE#include<getopt.h>#include<stdlib.h>#include<string.h>#include<signal.h>#include<unistd.h>#include<stdio.h>#include<time.h>#include<sched.h>#include<pthread.h>#include"utils.h"#include"osnoise.h"#include"timerlat.h"#include"timerlat_aa.h"#include"timerlat_u.h"structtimerlat_hist_params{char*cpus;cpu_set_tmonitored_cpus;char*trace_output;char*cgroup_name;unsignedlonglongruntime;longlongstop_us;longlongstop_total_us;longlongtimerlat_period_us;longlongprint_stack;intsleep_time;intoutput_divisor;intduration;intset_sched;intdma_latency;intcgroup;inthk_cpus;intno_aa;intdump_tasks;intuser_workload;intkernel_workload;intuser_hist;cpu_set_thk_cpu_set;structsched_attrsched_param;structtrace_events*events;charno_irq;charno_thread;charno_header;charno_summary;charno_index;charwith_zeros;intbucket_size;intentries;intwarmup;intbuffer_size;};structtimerlat_hist_cpu{int*irq;int*thread;int*user;intirq_count;intthread_count;intuser_count;unsignedlonglongmin_irq;unsignedlonglongsum_irq;unsignedlonglongmax_irq;unsignedlonglongmin_thread;unsignedlon