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

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

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ 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.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/util/header.h (Version linux-6.12-rc7) and /tools/perf/util/header.h (Version linux-4.20.17)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __PERF_HEADER_H                             2 #ifndef __PERF_HEADER_H
  3 #define __PERF_HEADER_H                             3 #define __PERF_HEADER_H
  4                                                     4 
  5 #include <linux/stddef.h>                           5 #include <linux/stddef.h>
  6 #include <linux/perf_event.h>                       6 #include <linux/perf_event.h>
  7 #include <sys/types.h>                              7 #include <sys/types.h>
  8 #include <stdio.h> // FILE                     << 
  9 #include <stdbool.h>                                8 #include <stdbool.h>
 10 #include <linux/bitmap.h>                           9 #include <linux/bitmap.h>
 11 #include <linux/types.h>                           10 #include <linux/types.h>
                                                   >>  11 #include "event.h"
 12 #include "env.h"                                   12 #include "env.h"
 13 #include "pmu.h"                                   13 #include "pmu.h"
 14                                                    14 
 15 enum {                                             15 enum {
 16         HEADER_RESERVED         = 0,    /* alw     16         HEADER_RESERVED         = 0,    /* always cleared */
 17         HEADER_FIRST_FEATURE    = 1,               17         HEADER_FIRST_FEATURE    = 1,
 18         HEADER_TRACING_DATA     = 1,               18         HEADER_TRACING_DATA     = 1,
 19         HEADER_BUILD_ID,                           19         HEADER_BUILD_ID,
 20                                                    20 
 21         HEADER_HOSTNAME,                           21         HEADER_HOSTNAME,
 22         HEADER_OSRELEASE,                          22         HEADER_OSRELEASE,
 23         HEADER_VERSION,                            23         HEADER_VERSION,
 24         HEADER_ARCH,                               24         HEADER_ARCH,
 25         HEADER_NRCPUS,                             25         HEADER_NRCPUS,
 26         HEADER_CPUDESC,                            26         HEADER_CPUDESC,
 27         HEADER_CPUID,                              27         HEADER_CPUID,
 28         HEADER_TOTAL_MEM,                          28         HEADER_TOTAL_MEM,
 29         HEADER_CMDLINE,                            29         HEADER_CMDLINE,
 30         HEADER_EVENT_DESC,                         30         HEADER_EVENT_DESC,
 31         HEADER_CPU_TOPOLOGY,                       31         HEADER_CPU_TOPOLOGY,
 32         HEADER_NUMA_TOPOLOGY,                      32         HEADER_NUMA_TOPOLOGY,
 33         HEADER_BRANCH_STACK,                       33         HEADER_BRANCH_STACK,
 34         HEADER_PMU_MAPPINGS,                       34         HEADER_PMU_MAPPINGS,
 35         HEADER_GROUP_DESC,                         35         HEADER_GROUP_DESC,
 36         HEADER_AUXTRACE,                           36         HEADER_AUXTRACE,
 37         HEADER_STAT,                               37         HEADER_STAT,
 38         HEADER_CACHE,                              38         HEADER_CACHE,
 39         HEADER_SAMPLE_TIME,                        39         HEADER_SAMPLE_TIME,
 40         HEADER_MEM_TOPOLOGY,                       40         HEADER_MEM_TOPOLOGY,
 41         HEADER_CLOCKID,                            41         HEADER_CLOCKID,
 42         HEADER_DIR_FORMAT,                     << 
 43         HEADER_BPF_PROG_INFO,                  << 
 44         HEADER_BPF_BTF,                        << 
 45         HEADER_COMPRESSED,                     << 
 46         HEADER_CPU_PMU_CAPS,                   << 
 47         HEADER_CLOCK_DATA,                     << 
 48         HEADER_HYBRID_TOPOLOGY,                << 
 49         HEADER_PMU_CAPS,                       << 
 50         HEADER_LAST_FEATURE,                       42         HEADER_LAST_FEATURE,
 51         HEADER_FEAT_BITS        = 256,             43         HEADER_FEAT_BITS        = 256,
 52 };                                                 44 };
 53                                                    45 
 54 enum perf_header_version {                         46 enum perf_header_version {
 55         PERF_HEADER_VERSION_1,                     47         PERF_HEADER_VERSION_1,
 56         PERF_HEADER_VERSION_2,                     48         PERF_HEADER_VERSION_2,
 57 };                                                 49 };
 58                                                    50 
 59 struct perf_file_section {                         51 struct perf_file_section {
 60         u64 offset;                                52         u64 offset;
 61         u64 size;                                  53         u64 size;
 62 };                                                 54 };
 63                                                    55 
 64 /**                                            << 
 65  * struct perf_file_header: Header representat << 
 66  */                                            << 
 67 struct perf_file_header {                          56 struct perf_file_header {
 68         /** @magic: Holds "PERFILE2". */       << 
 69         u64                             magic;     57         u64                             magic;
 70         /** @size: Size of this header - sizeo << 
 71         u64                             size;      58         u64                             size;
 72         /**                                    << 
 73          * @attr_size: Size of attrs entries - << 
 74          * sizeof(struct perf_file_section).   << 
 75          */                                    << 
 76         u64                             attr_s     59         u64                             attr_size;
 77         /** @attrs: Offset and size of file se << 
 78         struct perf_file_section        attrs;     60         struct perf_file_section        attrs;
 79         /** @data: Offset and size of file sec << 
 80         struct perf_file_section        data;      61         struct perf_file_section        data;
 81         /** @event_types: Ignored. */          !!  62         /* event_types is ignored */
 82         struct perf_file_section        event_     63         struct perf_file_section        event_types;
 83         /**                                    << 
 84          * @adds_features: Bitmap of features. << 
 85          */                                    << 
 86         DECLARE_BITMAP(adds_features, HEADER_F     64         DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS);
 87 };                                                 65 };
 88                                                    66 
 89 struct perf_pipe_file_header {                     67 struct perf_pipe_file_header {
 90         u64                             magic;     68         u64                             magic;
 91         u64                             size;      69         u64                             size;
 92 };                                                 70 };
 93                                                    71 
 94 struct perf_header;                                72 struct perf_header;
 95                                                    73 
 96 int perf_file_header__read(struct perf_file_he     74 int perf_file_header__read(struct perf_file_header *header,
 97                            struct perf_header      75                            struct perf_header *ph, int fd);
 98                                                    76 
 99 struct perf_header {                               77 struct perf_header {
100         enum perf_header_version        versio     78         enum perf_header_version        version;
101         bool                            needs_     79         bool                            needs_swap;
102         u64                             data_o     80         u64                             data_offset;
103         u64                             data_s     81         u64                             data_size;
104         u64                             feat_o     82         u64                             feat_offset;
105         DECLARE_BITMAP(adds_features, HEADER_F     83         DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS);
106         struct perf_env         env;               84         struct perf_env         env;
107 };                                                 85 };
108                                                    86 
109 struct feat_fd {                               !!  87 struct perf_evlist;
110         struct perf_header *ph;                << 
111         int                fd;                 << 
112         void               *buf;        /* Eit << 
113         ssize_t            offset;             << 
114         size_t             size;               << 
115         struct evsel       *events;            << 
116 };                                             << 
117                                                << 
118 struct perf_header_feature_ops {               << 
119         int        (*write)(struct feat_fd *ff << 
120         void       (*print)(struct feat_fd *ff << 
121         int        (*process)(struct feat_fd * << 
122         const char *name;                      << 
123         bool       full_only;                  << 
124         bool       synthesize;                 << 
125 };                                             << 
126                                                << 
127 struct evlist;                                 << 
128 struct perf_session;                               88 struct perf_session;
129 struct perf_tool;                              << 
130 union perf_event;                              << 
131                                                << 
132 extern const char perf_version_string[];       << 
133                                                    89 
134 int perf_session__read_header(struct perf_sess     90 int perf_session__read_header(struct perf_session *session);
135 int perf_session__write_header(struct perf_ses     91 int perf_session__write_header(struct perf_session *session,
136                                struct evlist * !!  92                                struct perf_evlist *evlist,
137                                int fd, bool at     93                                int fd, bool at_exit);
138 int perf_header__write_pipe(int fd);               94 int perf_header__write_pipe(int fd);
139                                                    95 
140 /* feat_writer writes a feature section to out << 
141 struct feat_writer {                           << 
142         int (*write)(struct feat_writer *fw, v << 
143 };                                             << 
144                                                << 
145 /* feat_copier copies a feature section using  << 
146 struct feat_copier {                           << 
147         int (*copy)(struct feat_copier *fc, in << 
148 };                                             << 
149                                                << 
150 int perf_session__inject_header(struct perf_se << 
151                                 struct evlist  << 
152                                 int fd,        << 
153                                 struct feat_co << 
154                                 bool write_att << 
155                                                << 
156 size_t perf_session__data_offset(const struct  << 
157                                                << 
158 void perf_header__set_feat(struct perf_header      96 void perf_header__set_feat(struct perf_header *header, int feat);
159 void perf_header__clear_feat(struct perf_heade     97 void perf_header__clear_feat(struct perf_header *header, int feat);
160 bool perf_header__has_feat(const struct perf_h     98 bool perf_header__has_feat(const struct perf_header *header, int feat);
161                                                    99 
162 int perf_header__set_cmdline(int argc, const c    100 int perf_header__set_cmdline(int argc, const char **argv);
163                                                   101 
164 int perf_header__process_sections(struct perf_    102 int perf_header__process_sections(struct perf_header *header, int fd,
165                                   void *data,     103                                   void *data,
166                                   int (*proces    104                                   int (*process)(struct perf_file_section *section,
167                                   struct perf_    105                                   struct perf_header *ph,
168                                   int feat, in    106                                   int feat, int fd, void *data));
169                                                   107 
170 int perf_header__fprintf_info(struct perf_sess    108 int perf_header__fprintf_info(struct perf_session *s, FILE *fp, bool full);
171                                                   109 
                                                   >> 110 int perf_event__synthesize_features(struct perf_tool *tool,
                                                   >> 111                                     struct perf_session *session,
                                                   >> 112                                     struct perf_evlist *evlist,
                                                   >> 113                                     perf_event__handler_t process);
                                                   >> 114 
                                                   >> 115 int perf_event__synthesize_extra_attr(struct perf_tool *tool,
                                                   >> 116                                       struct perf_evlist *evsel_list,
                                                   >> 117                                       perf_event__handler_t process,
                                                   >> 118                                       bool is_pipe);
                                                   >> 119 
172 int perf_event__process_feature(struct perf_se    120 int perf_event__process_feature(struct perf_session *session,
173                                 union perf_eve    121                                 union perf_event *event);
174 int perf_event__process_attr(const struct perf !! 122 
175                              struct evlist **p !! 123 int perf_event__synthesize_attr(struct perf_tool *tool,
176 int perf_event__process_event_update(const str !! 124                                 struct perf_event_attr *attr, u32 ids, u64 *id,
                                                   >> 125                                 perf_event__handler_t process);
                                                   >> 126 int perf_event__synthesize_attrs(struct perf_tool *tool,
                                                   >> 127                                  struct perf_evlist *evlist,
                                                   >> 128                                  perf_event__handler_t process);
                                                   >> 129 int perf_event__synthesize_event_update_unit(struct perf_tool *tool,
                                                   >> 130                                              struct perf_evsel *evsel,
                                                   >> 131                                              perf_event__handler_t process);
                                                   >> 132 int perf_event__synthesize_event_update_scale(struct perf_tool *tool,
                                                   >> 133                                               struct perf_evsel *evsel,
                                                   >> 134                                               perf_event__handler_t process);
                                                   >> 135 int perf_event__synthesize_event_update_name(struct perf_tool *tool,
                                                   >> 136                                              struct perf_evsel *evsel,
                                                   >> 137                                              perf_event__handler_t process);
                                                   >> 138 int perf_event__synthesize_event_update_cpus(struct perf_tool *tool,
                                                   >> 139                                              struct perf_evsel *evsel,
                                                   >> 140                                              perf_event__handler_t process);
                                                   >> 141 int perf_event__process_attr(struct perf_tool *tool, union perf_event *event,
                                                   >> 142                              struct perf_evlist **pevlist);
                                                   >> 143 int perf_event__process_event_update(struct perf_tool *tool,
177                                      union per    144                                      union perf_event *event,
178                                      struct ev !! 145                                      struct perf_evlist **pevlist);
179 size_t perf_event__fprintf_event_update(union     146 size_t perf_event__fprintf_event_update(union perf_event *event, FILE *fp);
180 #ifdef HAVE_LIBTRACEEVENT                      !! 147 
                                                   >> 148 int perf_event__synthesize_tracing_data(struct perf_tool *tool,
                                                   >> 149                                         int fd, struct perf_evlist *evlist,
                                                   >> 150                                         perf_event__handler_t process);
181 int perf_event__process_tracing_data(struct pe    151 int perf_event__process_tracing_data(struct perf_session *session,
182                                      union per    152                                      union perf_event *event);
183 #endif                                         !! 153 
                                                   >> 154 int perf_event__synthesize_build_id(struct perf_tool *tool,
                                                   >> 155                                     struct dso *pos, u16 misc,
                                                   >> 156                                     perf_event__handler_t process,
                                                   >> 157                                     struct machine *machine);
184 int perf_event__process_build_id(struct perf_s    158 int perf_event__process_build_id(struct perf_session *session,
185                                  union perf_ev    159                                  union perf_event *event);
186 bool is_perf_magic(u64 magic);                    160 bool is_perf_magic(u64 magic);
187                                                   161 
188 #define NAME_ALIGN 64                             162 #define NAME_ALIGN 64
189                                                   163 
190 struct feat_fd;                                   164 struct feat_fd;
191                                                   165 
192 int do_write(struct feat_fd *fd, const void *b    166 int do_write(struct feat_fd *fd, const void *buf, size_t size);
193                                                   167 
194 int write_padded(struct feat_fd *fd, const voi    168 int write_padded(struct feat_fd *fd, const void *bf,
195                  size_t count, size_t count_al    169                  size_t count, size_t count_aligned);
196                                                << 
197 #define MAX_CACHE_LVL 4                        << 
198                                                << 
199 int is_cpu_online(unsigned int cpu);           << 
200 int build_caches_for_cpu(u32 cpu, struct cpu_c << 
201                                                   170 
202 /*                                                171 /*
203  * arch specific callback                         172  * arch specific callback
204  */                                               173  */
205 int get_cpuid(char *buffer, size_t sz);           174 int get_cpuid(char *buffer, size_t sz);
206                                                   175 
207 char *get_cpuid_str(struct perf_pmu *pmu __may    176 char *get_cpuid_str(struct perf_pmu *pmu __maybe_unused);
208 int strcmp_cpuid_str(const char *s1, const cha    177 int strcmp_cpuid_str(const char *s1, const char *s2);
209 #endif /* __PERF_HEADER_H */                      178 #endif /* __PERF_HEADER_H */
210                                                   179 

~ [ 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