1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#ifndef __PERF_RECORD_H 2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define __PERF_RECORD_H 3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <limits.h> 5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <stdio.h> 6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../perf.h" 8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "map.h" 9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "build-id.h" 10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct mmap_event { 12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, tid; 14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 start; 15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 len; 16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 pgoff; 17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char filename[PATH_MAX]; 18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct mmap2_event { 21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, tid; 23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 start; 24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 len; 25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 pgoff; 26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 maj; 27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 min; 28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 ino; 29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 ino_generation; 30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char filename[PATH_MAX]; 31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct comm_event { 34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, tid; 36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char comm[16]; 37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct fork_event { 40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, ppid; 42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 tid, ptid; 43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time; 44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct lost_event { 47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 id; 49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 lost; 50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng/* 53e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID 54e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng */ 55e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct read_event { 56e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 57e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, tid; 58e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 value; 59e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time_enabled; 60e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time_running; 61e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 id; 62e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 63e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 64e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 65e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define PERF_SAMPLE_MASK \ 66e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng (PERF_SAMPLE_IP | PERF_SAMPLE_TID | \ 67e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_SAMPLE_TIME | PERF_SAMPLE_ADDR | \ 68e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_SAMPLE_ID | PERF_SAMPLE_STREAM_ID | \ 69e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD | \ 70e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_SAMPLE_IDENTIFIER) 71e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 72e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct sample_event { 73e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 74e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 array[]; 75e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 76e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 77e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct regs_dump { 78e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 abi; 79e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 *regs; 80e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 81e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 82e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct stack_dump { 83e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u16 offset; 84e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 size; 85e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char *data; 86e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 87e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 88e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct sample_read_value { 89e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 value; 90e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 id; 91e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 92e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 93e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct sample_read { 94e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time_enabled; 95e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time_running; 96e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union { 97e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct { 98e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 nr; 99e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct sample_read_value *values; 100e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng } group; 101e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct sample_read_value one; 102e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng }; 103e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 104e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 105e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_sample { 106e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 ip; 107e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 pid, tid; 108e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 time; 109e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 addr; 110e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 id; 111e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 stream_id; 112e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 period; 113e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 weight; 114e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 cpu; 115e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 raw_size; 116e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 data_src; 117e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng void *raw_data; 118e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct ip_callchain *callchain; 119e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct branch_stack *branch_stack; 120e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct regs_dump user_regs; 121e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct stack_dump user_stack; 122e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct sample_read read; 123e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 124e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 125e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define PERF_MEM_DATA_SRC_NONE \ 126e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng (PERF_MEM_S(OP, NA) |\ 127e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_MEM_S(LVL, NA) |\ 128e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_MEM_S(SNOOP, NA) |\ 129e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_MEM_S(LOCK, NA) |\ 130e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_MEM_S(TLB, NA)) 131e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 132e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct build_id_event { 133e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 134e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng pid_t pid; 135e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u8 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 136e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char filename[]; 137e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 138e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 139e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengenum perf_user_event_type { /* above any possible kernel type */ 140e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_USER_TYPE_START = 64, 141e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_HEADER_ATTR = 64, 142e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_HEADER_EVENT_TYPE = 65, /* depreceated */ 143e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_HEADER_TRACING_DATA = 66, 144e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_HEADER_BUILD_ID = 67, 145e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_FINISHED_ROUND = 68, 146e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_RECORD_HEADER_MAX 147e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 148e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 149e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct attr_event { 150e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 151e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_attr attr; 152e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 id[]; 153e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 154e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 155e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define MAX_EVENT_NAME 64 156e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 157e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_trace_event_type { 158e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 event_id; 159e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng char name[MAX_EVENT_NAME]; 160e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 161e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 162e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct event_type_event { 163e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 164e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_trace_event_type event_type; 165e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 166e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 167e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct tracing_data_event { 168e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 169e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u32 size; 170e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 171e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 172e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengunion perf_event { 173e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_event_header header; 174e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct mmap_event mmap; 175e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct mmap2_event mmap2; 176e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct comm_event comm; 177e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct fork_event fork; 178e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct lost_event lost; 179e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct read_event read; 180e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct sample_event sample; 181e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct attr_event attr; 182e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct event_type_event event_type; 183e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct tracing_data_event tracing_data; 184e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct build_id_event build_id; 185e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}; 186e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 187e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid perf_event__print_totals(void); 188e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 189e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_tool; 190e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct thread_map; 191e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 192e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtypedef int (*perf_event__handler_t)(struct perf_tool *tool, 193e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 194e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 195e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 196e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 197e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__synthesize_thread_map(struct perf_tool *tool, 198e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct thread_map *threads, 199e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng perf_event__handler_t process, 200e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 201e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__synthesize_threads(struct perf_tool *tool, 202e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng perf_event__handler_t process, 203e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 204e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__synthesize_kernel_mmap(struct perf_tool *tool, 205e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng perf_event__handler_t process, 206e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine, 207e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng const char *symbol_name); 208e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 209e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__synthesize_modules(struct perf_tool *tool, 210e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng perf_event__handler_t process, 211e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 212e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 213e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_comm(struct perf_tool *tool, 214e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 215e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 216e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 217e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_lost(struct perf_tool *tool, 218e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 219e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 220e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 221e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_mmap(struct perf_tool *tool, 222e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 223e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 224e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 225e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_mmap2(struct perf_tool *tool, 226e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 227e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 228e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 229e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_fork(struct perf_tool *tool, 230e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 231e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 232e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 233e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process_exit(struct perf_tool *tool, 234e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 235e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 236e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 237e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__process(struct perf_tool *tool, 238e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng union perf_event *event, 239e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample, 240e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine); 241e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 242e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct addr_location; 243e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__preprocess_sample(const union perf_event *self, 244e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct machine *machine, 245e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct addr_location *al, 246e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng struct perf_sample *sample); 247e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 248e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengconst char *perf_event__name(unsigned int id); 249e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 250e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__sample_event_size(const struct perf_sample *sample, u64 type, 251e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 sample_regs_user, u64 read_format); 252e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengint perf_event__synthesize_sample(union perf_event *event, u64 type, 253e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng u64 sample_regs_user, u64 read_format, 254e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng const struct perf_sample *sample, 255e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng bool swapped); 256e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 257e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__fprintf_comm(union perf_event *event, FILE *fp); 258e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp); 259e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp); 260e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__fprintf_task(union perf_event *event, FILE *fp); 261e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_event__fprintf(union perf_event *event, FILE *fp); 262e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 263e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#endif /* __PERF_RECORD_H */ 264