perf_stat
struct qdio_dev_perf_stat perf_stat;
#define qperf(__qdev, __attr) ((__qdev)->perf_stat.(__attr))
(qdev->perf_stat.__attr)++; \
stat = (unsigned int *)&irq_ptr->perf_stat;
memset(&irq_ptr->perf_stat, 0, sizeof(irq_ptr->perf_stat));
irq_ptr->perf_stat.qdio_int++;
memset(&irq_ptr->perf_stat, 0, sizeof(irq_ptr->perf_stat));
goto perf_stat;
perf_stat:
struct stat perf_stat;
err = fstat(input, &perf_stat);
if (!perf_stat.st_size) {
if (STAT_RECORD && perf_stat.data.is_pipe)
static struct perf_stat perf_stat;
#define STAT_RECORD perf_stat.record
u32 cache_level = (perf_stat.aggr_level) ?: stat_config.aggr_level;
return perf_env__get_socket_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_die_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_cluster_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_cache_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_core_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_cpu_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_node_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
return perf_env__get_global_aggr_by_cpu(cpu, perf_session__env(perf_stat.session));
static int perf_stat_init_aggr_mode_file(struct perf_stat *st)
struct perf_data *data = &perf_stat.data;
perf_stat.session = session;
perf_stat.record = true;
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
if (perf_stat.data.is_pipe)
static int set_maps(struct perf_stat *st)
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
struct perf_stat *st = container_of(tool, struct perf_stat, tool);
static struct perf_stat perf_stat = {
OPT_SET_UINT(0, "per-socket", &perf_stat.aggr_mode,
OPT_SET_UINT(0, "per-die", &perf_stat.aggr_mode,
OPT_SET_UINT(0, "per-cluster", &perf_stat.aggr_mode,
OPT_CALLBACK_OPTARG(0, "per-cache", &perf_stat.aggr_mode, &perf_stat.aggr_level,
OPT_SET_UINT(0, "per-core", &perf_stat.aggr_mode,
OPT_SET_UINT(0, "per-node", &perf_stat.aggr_mode,
OPT_SET_UINT('A', "no-aggr", &perf_stat.aggr_mode,
perf_stat.data.path = input_name;
perf_stat.data.mode = PERF_DATA_MODE_READ;
perf_tool__init(&perf_stat.tool, /*ordered_events=*/false);
perf_stat.tool.attr = perf_event__process_attr;
perf_stat.tool.event_update = perf_event__process_event_update;
perf_stat.tool.thread_map = process_thread_map_event;
perf_stat.tool.cpu_map = process_cpu_map_event;
perf_stat.tool.stat_config = process_stat_config_event;
perf_stat.tool.stat = perf_event__process_stat_event;
perf_stat.tool.stat_round = process_stat_round_event;
session = perf_session__new(&perf_stat.data, &perf_stat.tool);
perf_stat.session = session;
if (perf_data__write(&perf_stat.data, event, event->header.size) < 0) {
perf_stat.bytes_written += event->header.size;
stat_config.identifier = !(STAT_RECORD && perf_stat.data.is_pipe);
int fd = perf_data__fd(&perf_stat.data);
err = perf_event__synthesize_kernel_mmap((void *)&perf_stat,
&perf_stat.session->machines.host);
if (!perf_stat.data.is_pipe) {
perf_stat.session->header.data_size += perf_stat.bytes_written;
perf_session__write_header(perf_stat.session, evsel_list, fd, true);
perf_session__delete(perf_stat.session);
bool is_pipe = STAT_RECORD ? perf_stat.data.is_pipe : false;
int fd = perf_data__fd(&perf_stat.data);
err = perf_header__write_pipe(perf_data__fd(&perf_stat.data));
err = perf_session__write_header(perf_stat.session, evsel_list,