~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/session.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __PERF_SESSION_H
  3 #define __PERF_SESSION_H
  4 
  5 #include "trace-event.h"
  6 #include "event.h"
  7 #include "header.h"
  8 #include "machine.h"
  9 #include "data.h"
 10 #include "ordered-events.h"
 11 #include "util/compress.h"
 12 #include <linux/kernel.h>
 13 #include <linux/rbtree.h>
 14 #include <linux/perf_event.h>
 15 
 16 struct ip_callchain;
 17 struct symbol;
 18 struct thread;
 19 
 20 struct auxtrace;
 21 struct itrace_synth_opts;
 22 
 23 struct decomp_data {
 24         struct decomp    *decomp;
 25         struct decomp    *decomp_last;
 26         struct zstd_data *zstd_decomp;
 27 };
 28 
 29 struct perf_session {
 30         struct perf_header      header;
 31         struct machines         machines;
 32         struct evlist   *evlist;
 33         struct auxtrace         *auxtrace;
 34         struct itrace_synth_opts *itrace_synth_opts;
 35         struct list_head        auxtrace_index;
 36 #ifdef HAVE_LIBTRACEEVENT
 37         struct trace_event      tevent;
 38 #endif
 39         struct perf_record_time_conv    time_conv;
 40         bool                    repipe;
 41         bool                    one_mmap;
 42         void                    *one_mmap_addr;
 43         u64                     one_mmap_offset;
 44         struct ordered_events   ordered_events;
 45         struct perf_data        *data;
 46         struct perf_tool        *tool;
 47         u64                     bytes_transferred;
 48         u64                     bytes_compressed;
 49         struct zstd_data        zstd_data;
 50         struct decomp_data      decomp_data;
 51         struct decomp_data      *active_decomp;
 52 };
 53 
 54 struct decomp {
 55         struct decomp *next;
 56         u64 file_pos;
 57         const char *file_path;
 58         size_t mmap_len;
 59         u64 head;
 60         size_t size;
 61         char data[];
 62 };
 63 
 64 struct perf_tool;
 65 
 66 struct perf_session *__perf_session__new(struct perf_data *data,
 67                                          bool repipe, int repipe_fd,
 68                                          struct perf_tool *tool);
 69 
 70 static inline struct perf_session *perf_session__new(struct perf_data *data,
 71                                                      struct perf_tool *tool)
 72 {
 73         return __perf_session__new(data, false, -1, tool);
 74 }
 75 
 76 void perf_session__delete(struct perf_session *session);
 77 
 78 void perf_event_header__bswap(struct perf_event_header *hdr);
 79 
 80 int perf_session__peek_event(struct perf_session *session, off_t file_offset,
 81                              void *buf, size_t buf_sz,
 82                              union perf_event **event_ptr,
 83                              struct perf_sample *sample);
 84 typedef int (*peek_events_cb_t)(struct perf_session *session,
 85                                 union perf_event *event, u64 offset,
 86                                 void *data);
 87 int perf_session__peek_events(struct perf_session *session, u64 offset,
 88                               u64 size, peek_events_cb_t cb, void *data);
 89 
 90 int perf_session__process_events(struct perf_session *session);
 91 
 92 int perf_session__queue_event(struct perf_session *s, union perf_event *event,
 93                               u64 timestamp, u64 file_offset, const char *file_path);
 94 
 95 void perf_tool__fill_defaults(struct perf_tool *tool);
 96 
 97 int perf_session__resolve_callchain(struct perf_session *session,
 98                                     struct evsel *evsel,
 99                                     struct thread *thread,
100                                     struct ip_callchain *chain,
101                                     struct symbol **parent);
102 
103 bool perf_session__has_traces(struct perf_session *session, const char *msg);
104 
105 void perf_event__attr_swap(struct perf_event_attr *attr);
106 
107 int perf_session__create_kernel_maps(struct perf_session *session);
108 
109 void perf_session__set_id_hdr_size(struct perf_session *session);
110 
111 static inline
112 struct machine *perf_session__find_machine(struct perf_session *session, pid_t pid)
113 {
114         return machines__find(&session->machines, pid);
115 }
116 
117 static inline
118 struct machine *perf_session__findnew_machine(struct perf_session *session, pid_t pid)
119 {
120         return machines__findnew(&session->machines, pid);
121 }
122 
123 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid);
124 int perf_session__register_idle_thread(struct perf_session *session);
125 
126 size_t perf_session__fprintf(struct perf_session *session, FILE *fp);
127 
128 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp);
129 
130 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp,
131                                           bool (fn)(struct dso *dso, int parm), int parm);
132 
133 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp);
134 
135 void perf_session__dump_kmaps(struct perf_session *session);
136 
137 struct evsel *perf_session__find_first_evtype(struct perf_session *session,
138                                             unsigned int type);
139 
140 int perf_session__cpu_bitmap(struct perf_session *session,
141                              const char *cpu_list, unsigned long *cpu_bitmap);
142 
143 void perf_session__fprintf_info(struct perf_session *s, FILE *fp, bool full);
144 
145 struct evsel_str_handler;
146 
147 #define perf_session__set_tracepoints_handlers(session, array) \
148         __evlist__set_tracepoints_handlers(session->evlist, array, ARRAY_SIZE(array))
149 
150 extern volatile int session_done;
151 
152 #define session_done()  READ_ONCE(session_done)
153 
154 int perf_session__deliver_synth_event(struct perf_session *session,
155                                       union perf_event *event,
156                                       struct perf_sample *sample);
157 
158 int perf_session__dsos_hit_all(struct perf_session *session);
159 
160 int perf_event__process_id_index(struct perf_session *session,
161                                  union perf_event *event);
162 
163 int perf_event__process_finished_round(struct perf_tool *tool,
164                                        union perf_event *event,
165                                        struct ordered_events *oe);
166 
167 #endif /* __PERF_SESSION_H */
168 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php