event.c (1471B)
1// SPDX-License-Identifier: GPL-2.0 2#include <linux/types.h> 3#include <linux/string.h> 4#include <linux/zalloc.h> 5 6#include "../../../util/event.h" 7#include "../../../util/synthetic-events.h" 8#include "../../../util/machine.h" 9#include "../../../util/tool.h" 10#include "../../../util/map.h" 11#include "../../../util/debug.h" 12 13void arch_perf_parse_sample_weight(struct perf_sample *data, 14 const __u64 *array, u64 type) 15{ 16 union perf_sample_weight weight; 17 18 weight.full = *array; 19 if (type & PERF_SAMPLE_WEIGHT) 20 data->weight = weight.full; 21 else { 22 data->weight = weight.var1_dw; 23 data->ins_lat = weight.var2_w; 24 data->p_stage_cyc = weight.var3_w; 25 } 26} 27 28void arch_perf_synthesize_sample_weight(const struct perf_sample *data, 29 __u64 *array, u64 type) 30{ 31 *array = data->weight; 32 33 if (type & PERF_SAMPLE_WEIGHT_STRUCT) { 34 *array &= 0xffffffff; 35 *array |= ((u64)data->ins_lat << 32); 36 } 37} 38 39const char *arch_perf_header_entry(const char *se_header) 40{ 41 if (!strcmp(se_header, "Local INSTR Latency")) 42 return "Finish Cyc"; 43 else if (!strcmp(se_header, "INSTR Latency")) 44 return "Global Finish_cyc"; 45 else if (!strcmp(se_header, "Local Pipeline Stage Cycle")) 46 return "Dispatch Cyc"; 47 else if (!strcmp(se_header, "Pipeline Stage Cycle")) 48 return "Global Dispatch_cyc"; 49 return se_header; 50} 51 52int arch_support_sort_key(const char *sort_key) 53{ 54 if (!strcmp(sort_key, "p_stage_cyc")) 55 return 1; 56 if (!strcmp(sort_key, "local_p_stage_cyc")) 57 return 1; 58 return 0; 59}