Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.3-rc6 211 lines 5.1 kB view raw
1#ifndef __PERF_RECORD_H 2#define __PERF_RECORD_H 3 4#include <limits.h> 5#include <stdio.h> 6 7#include "../perf.h" 8#include "map.h" 9 10/* 11 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | * 12 */ 13struct ip_event { 14 struct perf_event_header header; 15 u64 ip; 16 u32 pid, tid; 17 unsigned char __more_data[]; 18}; 19 20struct mmap_event { 21 struct perf_event_header header; 22 u32 pid, tid; 23 u64 start; 24 u64 len; 25 u64 pgoff; 26 char filename[PATH_MAX]; 27}; 28 29struct comm_event { 30 struct perf_event_header header; 31 u32 pid, tid; 32 char comm[16]; 33}; 34 35struct fork_event { 36 struct perf_event_header header; 37 u32 pid, ppid; 38 u32 tid, ptid; 39 u64 time; 40}; 41 42struct lost_event { 43 struct perf_event_header header; 44 u64 id; 45 u64 lost; 46}; 47 48/* 49 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID 50 */ 51struct read_event { 52 struct perf_event_header header; 53 u32 pid, tid; 54 u64 value; 55 u64 time_enabled; 56 u64 time_running; 57 u64 id; 58}; 59 60 61#define PERF_SAMPLE_MASK \ 62 (PERF_SAMPLE_IP | PERF_SAMPLE_TID | \ 63 PERF_SAMPLE_TIME | PERF_SAMPLE_ADDR | \ 64 PERF_SAMPLE_ID | PERF_SAMPLE_STREAM_ID | \ 65 PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD) 66 67struct sample_event { 68 struct perf_event_header header; 69 u64 array[]; 70}; 71 72struct perf_sample { 73 u64 ip; 74 u32 pid, tid; 75 u64 time; 76 u64 addr; 77 u64 id; 78 u64 stream_id; 79 u64 period; 80 u32 cpu; 81 u32 raw_size; 82 void *raw_data; 83 struct ip_callchain *callchain; 84}; 85 86#define BUILD_ID_SIZE 20 87 88struct build_id_event { 89 struct perf_event_header header; 90 pid_t pid; 91 u8 build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))]; 92 char filename[]; 93}; 94 95enum perf_user_event_type { /* above any possible kernel type */ 96 PERF_RECORD_USER_TYPE_START = 64, 97 PERF_RECORD_HEADER_ATTR = 64, 98 PERF_RECORD_HEADER_EVENT_TYPE = 65, 99 PERF_RECORD_HEADER_TRACING_DATA = 66, 100 PERF_RECORD_HEADER_BUILD_ID = 67, 101 PERF_RECORD_FINISHED_ROUND = 68, 102 PERF_RECORD_HEADER_MAX 103}; 104 105struct attr_event { 106 struct perf_event_header header; 107 struct perf_event_attr attr; 108 u64 id[]; 109}; 110 111#define MAX_EVENT_NAME 64 112 113struct perf_trace_event_type { 114 u64 event_id; 115 char name[MAX_EVENT_NAME]; 116}; 117 118struct event_type_event { 119 struct perf_event_header header; 120 struct perf_trace_event_type event_type; 121}; 122 123struct tracing_data_event { 124 struct perf_event_header header; 125 u32 size; 126}; 127 128union perf_event { 129 struct perf_event_header header; 130 struct ip_event ip; 131 struct mmap_event mmap; 132 struct comm_event comm; 133 struct fork_event fork; 134 struct lost_event lost; 135 struct read_event read; 136 struct sample_event sample; 137 struct attr_event attr; 138 struct event_type_event event_type; 139 struct tracing_data_event tracing_data; 140 struct build_id_event build_id; 141}; 142 143void perf_event__print_totals(void); 144 145struct perf_tool; 146struct thread_map; 147 148typedef int (*perf_event__handler_t)(struct perf_tool *tool, 149 union perf_event *event, 150 struct perf_sample *sample, 151 struct machine *machine); 152 153int perf_event__synthesize_thread_map(struct perf_tool *tool, 154 struct thread_map *threads, 155 perf_event__handler_t process, 156 struct machine *machine); 157int perf_event__synthesize_threads(struct perf_tool *tool, 158 perf_event__handler_t process, 159 struct machine *machine); 160int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, 161 perf_event__handler_t process, 162 struct machine *machine, 163 const char *symbol_name); 164 165int perf_event__synthesize_modules(struct perf_tool *tool, 166 perf_event__handler_t process, 167 struct machine *machine); 168 169int perf_event__process_comm(struct perf_tool *tool, 170 union perf_event *event, 171 struct perf_sample *sample, 172 struct machine *machine); 173int perf_event__process_lost(struct perf_tool *tool, 174 union perf_event *event, 175 struct perf_sample *sample, 176 struct machine *machine); 177int perf_event__process_mmap(struct perf_tool *tool, 178 union perf_event *event, 179 struct perf_sample *sample, 180 struct machine *machine); 181int perf_event__process_task(struct perf_tool *tool, 182 union perf_event *event, 183 struct perf_sample *sample, 184 struct machine *machine); 185int perf_event__process(struct perf_tool *tool, 186 union perf_event *event, 187 struct perf_sample *sample, 188 struct machine *machine); 189 190struct addr_location; 191int perf_event__preprocess_sample(const union perf_event *self, 192 struct machine *machine, 193 struct addr_location *al, 194 struct perf_sample *sample, 195 symbol_filter_t filter); 196 197const char *perf_event__name(unsigned int id); 198 199int perf_event__parse_sample(const union perf_event *event, u64 type, 200 int sample_size, bool sample_id_all, 201 struct perf_sample *sample, bool swapped); 202int perf_event__synthesize_sample(union perf_event *event, u64 type, 203 const struct perf_sample *sample, 204 bool swapped); 205 206size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp); 207size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp); 208size_t perf_event__fprintf_task(union perf_event *event, FILE *fp); 209size_t perf_event__fprintf(union perf_event *event, FILE *fp); 210 211#endif /* __PERF_RECORD_H */