Lines Matching defs:event

34  * syscall uses to pass the event ids and categories to perfmon.
37 DEFINE_PERFMON_FORMAT_ATTR(event, "config:4-31");
80 static bool is_idxd_event(struct idxd_pmu *idxd_pmu, struct perf_event *event)
82 return &idxd_pmu->pmu == event->pmu;
89 struct perf_event *event;
107 for_each_sibling_event(event, leader) {
108 if (!is_idxd_event(idxd_pmu, event) ||
109 event->state <= PERF_EVENT_STATE_OFF)
115 idxd_pmu->event_list[n] = event;
124 struct perf_event *event, int idx)
127 struct hw_perf_event *hwc = &event->hw;
135 struct perf_event *event)
150 * To do this, create a fake idxd_pmu object so the event collection
155 struct perf_event *event)
157 struct perf_event *leader = event->group_leader;
175 n = perfmon_collect_events(fake_pmu, event, false);
184 event = fake_pmu->event_list[i];
186 idx = perfmon_assign_event(fake_pmu, event);
198 static int perfmon_pmu_event_init(struct perf_event *event)
203 idxd = event_to_idxd(event);
204 event->hw.idx = -1;
206 if (event->attr.type != event->pmu->type)
210 if (event->attr.sample_period)
213 if (event->cpu < 0)
216 if (event->pmu != &idxd->idxd_pmu->pmu)
219 event->hw.event_base = ioread64(PERFMON_TABLE_OFFSET(idxd));
220 event->cpu = idxd->idxd_pmu->cpu;
221 event->hw.config = event->attr.config;
223 if (event->group_leader != event)
225 ret = perfmon_validate_group(idxd->idxd_pmu, event);
230 static inline u64 perfmon_pmu_read_counter(struct perf_event *event)
232 struct hw_perf_event *hwc = &event->hw;
236 idxd = event_to_idxd(event);
241 static void perfmon_pmu_event_update(struct perf_event *event)
243 struct idxd_device *idxd = event_to_idxd(event);
246 struct hw_perf_event *hwc = &event->hw;
250 new_raw_count = perfmon_pmu_read_counter(event);
258 local64_add(delta, &event->count);
264 struct perf_event *event;
284 /* Update event->count for overflowed counter */
285 event = idxd->idxd_pmu->event_list[i];
286 perfmon_pmu_event_update(event);
320 static void perfmon_pmu_event_start(struct perf_event *event, int mode)
324 struct hw_perf_event *hwc = &event->hw;
330 idxd = event_to_idxd(event);
332 event->hw.idx = hwc->idx;
335 /* Obtain event category and event value from user space */
336 event_cfg.val = event->attr.config;
337 flt_cfg.val = event->attr.config1;
361 local64_set(&event->hw.prev_count, cntrdata);
363 /* Set counter to event/category */
372 static void perfmon_pmu_event_stop(struct perf_event *event, int mode)
374 struct hw_perf_event *hwc = &event->hw;
379 idxd = event_to_idxd(event);
381 /* remove this event from event list */
383 if (event != idxd->idxd_pmu->event_list[i])
397 perfmon_pmu_event_update(event);
399 event->hw.idx = -1;
403 static void perfmon_pmu_event_del(struct perf_event *event, int mode)
405 perfmon_pmu_event_stop(event, PERF_EF_UPDATE);
408 static int perfmon_pmu_event_add(struct perf_event *event, int flags)
410 struct idxd_device *idxd = event_to_idxd(event);
412 struct hw_perf_event *hwc = &event->hw;
415 n = perfmon_collect_events(idxd_pmu, event, false);
423 idx = perfmon_assign_event(idxd_pmu, event);
427 perfmon_assign_hw_event(idxd_pmu, event, idx);
430 perfmon_pmu_event_start(event, 0);
601 /* Number of event categories cannot be 0 */