1e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifndef __PERF_EVLIST_H 2e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define __PERF_EVLIST_H 1 3e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 4e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/* ANDROID_CHANGE_BEGIN */ 5e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#if 0 6e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <linux/list.h> 7e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else 8e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "include/linux/list.h" 9e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif 10e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/* ANDROID_CHANGE_END */ 11e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "../perf.h" 12e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "event.h" 13e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 14e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct pollfd; 15e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct thread_map; 16e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct cpu_map; 17e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 18e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define PERF_EVLIST__HLIST_BITS 8 19e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS) 20e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 21e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct perf_evlist { 22e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct list_head entries; 23e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct hlist_head heads[PERF_EVLIST__HLIST_SIZE]; 24e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng int nr_entries; 25e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng int nr_fds; 26e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng int nr_mmaps; 27e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng int mmap_len; 28e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng bool overwrite; 29e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng union perf_event event_copy; 30e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct perf_mmap *mmap; 31e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct pollfd *pollfd; 32e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct thread_map *threads; 33e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct cpu_map *cpus; 34e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}; 35e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 36e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct perf_evsel; 37e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 38e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct perf_evlist *perf_evlist__new(struct cpu_map *cpus, 39e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct thread_map *threads); 40e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, 41e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct thread_map *threads); 42e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__exit(struct perf_evlist *evlist); 43e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__delete(struct perf_evlist *evlist); 44e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 45e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry); 46e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__add_default(struct perf_evlist *evlist); 47e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 48e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, 49e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng int cpu, int thread, u64 id); 50e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 51e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__alloc_pollfd(struct perf_evlist *evlist); 52e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd); 53e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 54e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id); 55e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 56e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengunion perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx); 57e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 58e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__alloc_mmap(struct perf_evlist *evlist); 59e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__mmap(struct perf_evlist *evlist, int pages, bool overwrite); 60e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__munmap(struct perf_evlist *evlist); 61e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 62e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstatic inline void perf_evlist__set_maps(struct perf_evlist *evlist, 63e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct cpu_map *cpus, 64e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng struct thread_map *threads) 65e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{ 66e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng evlist->cpus = cpus; 67e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng evlist->threads = threads; 68e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng} 69e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 70e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid, 71e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng pid_t target_tid, const char *cpu_list); 72e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid perf_evlist__delete_maps(struct perf_evlist *evlist); 73e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint perf_evlist__set_filters(struct perf_evlist *evlist); 74e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 75e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengu64 perf_evlist__sample_type(const struct perf_evlist *evlist); 76e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbool perf_evlist__sample_id_all(const const struct perf_evlist *evlist); 77e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 78e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbool perf_evlist__valid_sample_type(const struct perf_evlist *evlist); 79e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbool perf_evlist__valid_sample_id_all(const struct perf_evlist *evlist); 80e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif /* __PERF_EVLIST_H */ 81