Lines Matching refs:entry

370 static void probe_cache_entry__delete(struct probe_cache_entry *entry)  in probe_cache_entry__delete()  argument
372 if (entry) { in probe_cache_entry__delete()
373 BUG_ON(!list_empty(&entry->node)); in probe_cache_entry__delete()
375 strlist__delete(entry->tevlist); in probe_cache_entry__delete()
376 clear_perf_probe_event(&entry->pev); in probe_cache_entry__delete()
377 zfree(&entry->spev); in probe_cache_entry__delete()
378 free(entry); in probe_cache_entry__delete()
385 struct probe_cache_entry *entry = zalloc(sizeof(*entry)); in probe_cache_entry__new() local
387 if (entry) { in probe_cache_entry__new()
388 INIT_LIST_HEAD(&entry->node); in probe_cache_entry__new()
389 entry->tevlist = strlist__new(NULL, NULL); in probe_cache_entry__new()
390 if (!entry->tevlist) in probe_cache_entry__new()
391 zfree(&entry); in probe_cache_entry__new()
393 entry->spev = synthesize_perf_probe_command(pev); in probe_cache_entry__new()
394 if (!entry->spev || in probe_cache_entry__new()
395 perf_probe_event__copy(&entry->pev, pev) < 0) { in probe_cache_entry__new()
396 probe_cache_entry__delete(entry); in probe_cache_entry__new()
402 return entry; in probe_cache_entry__new()
405 int probe_cache_entry__get_event(struct probe_cache_entry *entry, in probe_cache_entry__get_event() argument
412 ret = strlist__nr_entries(entry->tevlist); in probe_cache_entry__get_event()
421 strlist__for_each_entry(node, entry->tevlist) { in probe_cache_entry__get_event()
493 struct probe_cache_entry *entry = NULL; in probe_cache__load() local
515 entry = probe_cache_entry__new(NULL); in probe_cache__load()
516 if (!entry) { in probe_cache__load()
521 entry->sdt = true; in probe_cache__load()
522 entry->spev = strdup(buf + 1); in probe_cache__load()
523 if (entry->spev) in probe_cache__load()
525 &entry->pev); in probe_cache__load()
529 probe_cache_entry__delete(entry); in probe_cache__load()
532 list_add_tail(&entry->node, &pcache->entries); in probe_cache__load()
534 if (!entry) { in probe_cache__load()
538 ret = strlist__add(entry->tevlist, buf); in probe_cache__load()
563 struct probe_cache_entry *entry, *n; in probe_cache__purge() local
565 list_for_each_entry_safe(entry, n, &pcache->entries, node) { in probe_cache__purge()
566 list_del_init(&entry->node); in probe_cache__purge()
567 probe_cache_entry__delete(entry); in probe_cache__purge()
623 struct probe_cache_entry *entry = NULL; in probe_cache__find() local
629 for_each_probe_cache_entry(entry, pcache) { in probe_cache__find()
631 if (entry->pev.event && in probe_cache__find()
632 streql(entry->pev.event, pev->event) && in probe_cache__find()
634 streql(entry->pev.group, pev->group))) in probe_cache__find()
641 (streql(entry->pev.group, pev->group) && in probe_cache__find()
642 streql(entry->pev.event, pev->event))) || in probe_cache__find()
643 (!strcmp(entry->spev, cmd))) in probe_cache__find()
646 entry = NULL; in probe_cache__find()
650 return entry; in probe_cache__find()
657 struct probe_cache_entry *entry = NULL; in probe_cache__find_by_name() local
659 for_each_probe_cache_entry(entry, pcache) { in probe_cache__find_by_name()
661 if (streql(entry->pev.group, group) && in probe_cache__find_by_name()
662 streql(entry->pev.event, event)) in probe_cache__find_by_name()
665 entry = NULL; in probe_cache__find_by_name()
668 return entry; in probe_cache__find_by_name()
675 struct probe_cache_entry *entry = NULL; in probe_cache__add_entry() local
685 entry = probe_cache__find(pcache, pev); in probe_cache__add_entry()
686 if (entry) { in probe_cache__add_entry()
687 list_del_init(&entry->node); in probe_cache__add_entry()
688 probe_cache_entry__delete(entry); in probe_cache__add_entry()
692 entry = probe_cache_entry__new(pev); in probe_cache__add_entry()
693 if (!entry) in probe_cache__add_entry()
703 ret = strlist__add(entry->tevlist, command); in probe_cache__add_entry()
711 list_add_tail(&entry->node, &pcache->entries); in probe_cache__add_entry()
717 probe_cache_entry__delete(entry); in probe_cache__add_entry()
890 struct probe_cache_entry *entry = NULL; in probe_cache__scan_sdt() local
908 entry = probe_cache__find_by_name(pcache, sdtgrp, note->name); in probe_cache__scan_sdt()
909 if (!entry) { in probe_cache__scan_sdt()
910 entry = probe_cache_entry__new(NULL); in probe_cache__scan_sdt()
911 if (!entry) { in probe_cache__scan_sdt()
915 entry->sdt = true; in probe_cache__scan_sdt()
916 ret = asprintf(&entry->spev, "%s:%s=%s", sdtgrp, in probe_cache__scan_sdt()
920 entry->pev.event = strdup(note->name); in probe_cache__scan_sdt()
921 entry->pev.group = strdup(sdtgrp); in probe_cache__scan_sdt()
922 list_add_tail(&entry->node, &pcache->entries); in probe_cache__scan_sdt()
930 ret = strlist__add(entry->tevlist, buf); in probe_cache__scan_sdt()
933 entry = NULL; in probe_cache__scan_sdt()
940 if (entry) { in probe_cache__scan_sdt()
941 list_del_init(&entry->node); in probe_cache__scan_sdt()
942 probe_cache_entry__delete(entry); in probe_cache__scan_sdt()
949 static int probe_cache_entry__write(struct probe_cache_entry *entry, int fd) in probe_cache_entry__write() argument
954 const char *prefix = entry->sdt ? "%" : "#"; in probe_cache_entry__write()
961 pr_debug("Writing cache: %s%s\n", prefix, entry->spev); in probe_cache_entry__write()
963 iov[1].iov_base = entry->spev; iov[1].iov_len = strlen(entry->spev); in probe_cache_entry__write()
969 strlist__for_each_entry(snode, entry->tevlist) { in probe_cache_entry__write()
991 struct probe_cache_entry *entry; in probe_cache__commit() local
1003 for_each_probe_cache_entry(entry, pcache) { in probe_cache__commit()
1004 ret = probe_cache_entry__write(entry, pcache->fd); in probe_cache__commit()
1013 static bool probe_cache_entry__compare(struct probe_cache_entry *entry, in probe_cache_entry__compare() argument
1016 char buf[128], *ptr = entry->spev; in probe_cache_entry__compare()
1018 if (entry->pev.event) { in probe_cache_entry__compare()
1019 snprintf(buf, 128, "%s:%s", entry->pev.group, entry->pev.event); in probe_cache_entry__compare()
1028 struct probe_cache_entry *entry, *tmp; in probe_cache__filter_purge() local
1030 list_for_each_entry_safe(entry, tmp, &pcache->entries, node) { in probe_cache__filter_purge()
1031 if (probe_cache_entry__compare(entry, filter)) { in probe_cache__filter_purge()
1032 pr_info("Removed cached event: %s\n", entry->spev); in probe_cache__filter_purge()
1033 list_del_init(&entry->node); in probe_cache__filter_purge()
1034 probe_cache_entry__delete(entry); in probe_cache__filter_purge()
1043 struct probe_cache_entry *entry; in probe_cache__show_entries() local
1045 for_each_probe_cache_entry(entry, pcache) { in probe_cache__show_entries()
1046 if (probe_cache_entry__compare(entry, filter)) in probe_cache__show_entries()
1047 printf("%s\n", entry->spev); in probe_cache__show_entries()