Lines Matching defs:event

17 #include "util/trace-event.h"
161 struct kvm_event *event;
167 list_for_each_entry(event, head, hash_entry) {
168 /* reset stats for event */
169 event->total.time = 0;
170 init_stats(&event->total.stats);
172 for (j = 0; j < event->max_vcpu; ++j) {
173 event->vcpu[j].time = 0;
174 init_stats(&event->vcpu[j].stats);
186 static bool kvm_event_expand(struct kvm_event *event, int vcpu_id)
188 int old_max_vcpu = event->max_vcpu;
191 if (vcpu_id < event->max_vcpu)
194 while (event->max_vcpu <= vcpu_id)
195 event->max_vcpu += DEFAULT_VCPU_NUM;
197 prev = event->vcpu;
198 event->vcpu = realloc(event->vcpu,
199 event->max_vcpu * sizeof(*event->vcpu));
200 if (!event->vcpu) {
206 memset(event->vcpu + old_max_vcpu, 0,
207 (event->max_vcpu - old_max_vcpu) * sizeof(*event->vcpu));
213 struct kvm_event *event;
215 event = zalloc(sizeof(*event));
216 if (!event) {
221 event->key = *key;
222 init_stats(&event->total.stats);
223 return event;
229 struct kvm_event *event;
235 list_for_each_entry(event, head, hash_entry) {
236 if (event->key.key == key->key && event->key.info == key->info)
237 return event;
240 event = kvm_alloc_init_event(key);
241 if (!event)
244 list_add(&event->hash_entry, head);
245 return event;
252 struct kvm_event *event = NULL;
255 event = find_create_kvm_event(kvm, key);
257 vcpu_record->last_event = event;
269 static double kvm_event_rel_stddev(int vcpu_id, struct kvm_event *event)
271 struct kvm_event_stats *kvm_stats = &event->total;
274 kvm_stats = &event->vcpu[vcpu_id];
280 static bool update_kvm_event(struct kvm_event *event, int vcpu_id,
284 kvm_update_event_stats(&event->total, time_diff);
288 if (!kvm_event_expand(event, vcpu_id))
291 kvm_update_event_stats(&event->vcpu[vcpu_id], time_diff);
322 struct kvm_event *event = NULL;
325 event = find_create_kvm_event(kvm, key);
327 vcpu_record->last_event = event;
332 static bool skip_event(const char *event)
337 if (!strcmp(event, *skip_events))
348 struct kvm_event *event;
357 event = vcpu_record->last_event;
360 /* The begin event is not caught. */
365 * In some case, the 'begin event' only records the start timestamp,
366 * the actual event is recognized in the 'end event' (e.g. mmio-event).
370 if (!event && key->key == INVALID_KEY)
373 if (!event)
374 event = find_create_kvm_event(kvm, key);
376 if (!event)
384 pr_debug("End time before begin time; skipping event.\n");
393 kvm->events_ops->decode_key(kvm, &event->key, decode);
395 pr_info("%" PRIu64 " VM %d, vcpu %d: %s event took %" PRIu64 "usec\n",
401 return update_kvm_event(event, vcpu, time_diff);
457 static u64 get_event_ ##func(struct kvm_event *event, int vcpu) \
460 return event->total.field; \
462 if (vcpu >= event->max_vcpu) \
465 return event->vcpu[vcpu].field; \
507 static void insert_to_result(struct rb_root *result, struct kvm_event *event,
518 if (bigger(event, p, vcpu))
524 rb_link_node(&event->rb, parent, rb);
525 rb_insert_color(&event->rb, result);
529 update_total_count(struct perf_kvm_stat *kvm, struct kvm_event *event)
533 kvm->total_count += get_event_count(event, vcpu);
534 kvm->total_time += get_event_time(event, vcpu);
537 static bool event_is_valid(struct kvm_event *event, int vcpu)
539 return !!get_event_count(event, vcpu);
546 struct kvm_event *event;
549 list_for_each_entry(event, &kvm->kvm_events_cache[i], hash_entry) {
550 if (event_is_valid(event, vcpu)) {
551 update_total_count(kvm, event);
552 insert_to_result(&kvm->result, event,
609 struct kvm_event *event;
629 while ((event = pop_from_result(&kvm->result))) {
632 ecount = get_event_count(event, vcpu);
633 etime = get_event_time(event, vcpu);
634 max = get_event_max(event, vcpu);
635 min = get_event_min(event, vcpu);
637 kvm->events_ops->decode_key(kvm, &event->key, decode);
645 kvm_event_rel_stddev(vcpu, event));
658 union perf_event *event __maybe_unused,
679 union perf_event *event,
694 pr_debug("problem processing %d event, skipping it.\n",
695 event->header.type);
754 union perf_event *event;
766 while ((event = perf_mmap__read_event(&md->core)) != NULL) {
767 err = perf_evlist__parse_sample_timestamp(evlist, event, &timestamp);
774 err = perf_session__queue_event(kvm->session, event, timestamp, 0);
776 * FIXME: Here we can't consume the event, as perf_session__queue_event will
1230 set_option_flag(record_options, 'e', "event", PARSE_OPT_HIDDEN);
1258 OPT_STRING(0, "event", &kvm->report_event, "report event",
1259 "event for reporting: vmexit, "
1360 OPT_STRING(0, "event", &kvm->report_event, "report event",
1361 "event for reporting: "
1385 /* event handling */
1431 * generate the event list