Lines Matching refs:event

54 	struct perf_event *event;	/* Perf event for sampling */  member
119 static void paiext_event_destroy(struct perf_event *event) in paiext_event_destroy() argument
121 struct paiext_mapptr *mp = per_cpu_ptr(paiext_root.mapptr, event->cpu); in paiext_event_destroy()
125 cpump->event = NULL; in paiext_event_destroy()
131 event->cpu, mp->mapptr); in paiext_event_destroy()
149 static int paiext_alloc(struct perf_event_attr *a, struct perf_event *event) in paiext_alloc() argument
161 mp = per_cpu_ptr(paiext_root.mapptr, event->cpu); in paiext_alloc()
206 cpump->event = event; in paiext_alloc()
226 static int paiext_event_valid(struct perf_event *event) in paiext_event_valid() argument
228 u64 cfg = event->attr.config; in paiext_event_valid()
232 event->hw.config_base = offsetof(struct paiext_cb, acc); in paiext_event_valid()
239 static int paiext_event_init(struct perf_event *event) in paiext_event_init() argument
241 struct perf_event_attr *a = &event->attr; in paiext_event_init()
245 if (a->type != PERF_TYPE_RAW && event->pmu->type != a->type) in paiext_event_init()
248 rc = paiext_event_valid(event); in paiext_event_init()
252 if (event->hw.target || event->cpu == -1) in paiext_event_init()
261 rc = paiext_alloc(a, event); in paiext_event_init()
264 event->hw.last_tag = 0; in paiext_event_init()
265 event->destroy = paiext_event_destroy; in paiext_event_init()
271 event->attach_state |= PERF_ATTACH_SCHED_CB; in paiext_event_init()
289 static u64 paiext_getdata(struct perf_event *event) in paiext_getdata() argument
296 if (event->attr.config != PAI_NNPA_BASE) in paiext_getdata()
297 return paiext_getctr(cpump, event->attr.config - PAI_NNPA_BASE); in paiext_getdata()
305 static u64 paiext_getall(struct perf_event *event) in paiext_getall() argument
307 return paiext_getdata(event); in paiext_getall()
310 static void paiext_read(struct perf_event *event) in paiext_read() argument
314 prev = local64_read(&event->hw.prev_count); in paiext_read()
315 new = paiext_getall(event); in paiext_read()
316 local64_set(&event->hw.prev_count, new); in paiext_read()
318 local64_add(delta, &event->count); in paiext_read()
321 static void paiext_start(struct perf_event *event, int flags) in paiext_start() argument
325 if (event->hw.last_tag) in paiext_start()
327 event->hw.last_tag = 1; in paiext_start()
328 sum = paiext_getall(event); /* Get current value */ in paiext_start()
329 local64_set(&event->hw.prev_count, sum); in paiext_start()
330 local64_set(&event->count, 0); in paiext_start()
333 static int paiext_add(struct perf_event *event, int flags) in paiext_add() argument
347 if (flags & PERF_EF_START && !event->attr.sample_period) { in paiext_add()
349 paiext_start(event, PERF_EF_RELOAD); in paiext_add()
351 event->hw.state = 0; in paiext_add()
352 if (event->attr.sample_period) { in paiext_add()
353 cpump->event = event; in paiext_add()
354 perf_sched_cb_inc(event->pmu); in paiext_add()
359 static void paiext_stop(struct perf_event *event, int flags) in paiext_stop() argument
361 paiext_read(event); in paiext_stop()
362 event->hw.state = PERF_HES_STOPPED; in paiext_stop()
365 static void paiext_del(struct perf_event *event, int flags) in paiext_del() argument
371 if (event->attr.sample_period) in paiext_del()
372 perf_sched_cb_dec(event->pmu); in paiext_del()
373 if (!event->attr.sample_period) { in paiext_del()
375 paiext_stop(event, PERF_EF_UPDATE); in paiext_del()
428 struct perf_event *event = cpump->event; in paiext_push_sample() local
443 perf_sample_data_init(&data, 0, event->hw.last_period); in paiext_push_sample()
444 if (event->attr.sample_type & PERF_SAMPLE_TID) { in paiext_push_sample()
448 if (event->attr.sample_type & PERF_SAMPLE_TIME) in paiext_push_sample()
449 data.time = event->clock(); in paiext_push_sample()
450 if (event->attr.sample_type & (PERF_SAMPLE_ID | PERF_SAMPLE_IDENTIFIER)) in paiext_push_sample()
451 data.id = event->id; in paiext_push_sample()
452 if (event->attr.sample_type & PERF_SAMPLE_CPU) in paiext_push_sample()
454 if (event->attr.sample_type & PERF_SAMPLE_RAW) { in paiext_push_sample()
460 overflow = perf_event_overflow(event, &data, &regs); in paiext_push_sample()
461 perf_event_update_userpage(event); in paiext_push_sample()
497 PMU_FORMAT_ATTR(event, "config:0-63");