linux/tools/perf/util/header.h
<<
>>
Prefs
   1#ifndef __PERF_HEADER_H
   2#define __PERF_HEADER_H
   3
   4#include "../../../include/linux/perf_event.h"
   5#include <sys/types.h>
   6#include <stdbool.h>
   7#include "types.h"
   8#include "event.h"
   9
  10#include <linux/bitmap.h>
  11
  12enum {
  13        HEADER_RESERVED         = 0,    /* always cleared */
  14        HEADER_FIRST_FEATURE    = 1,
  15        HEADER_TRACING_DATA     = 1,
  16        HEADER_BUILD_ID,
  17
  18        HEADER_HOSTNAME,
  19        HEADER_OSRELEASE,
  20        HEADER_VERSION,
  21        HEADER_ARCH,
  22        HEADER_NRCPUS,
  23        HEADER_CPUDESC,
  24        HEADER_CPUID,
  25        HEADER_TOTAL_MEM,
  26        HEADER_CMDLINE,
  27        HEADER_EVENT_DESC,
  28        HEADER_CPU_TOPOLOGY,
  29        HEADER_NUMA_TOPOLOGY,
  30        HEADER_BRANCH_STACK,
  31        HEADER_LAST_FEATURE,
  32        HEADER_FEAT_BITS        = 256,
  33};
  34
  35struct perf_file_section {
  36        u64 offset;
  37        u64 size;
  38};
  39
  40struct perf_file_header {
  41        u64                             magic;
  42        u64                             size;
  43        u64                             attr_size;
  44        struct perf_file_section        attrs;
  45        struct perf_file_section        data;
  46        struct perf_file_section        event_types;
  47        DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS);
  48};
  49
  50struct perf_pipe_file_header {
  51        u64                             magic;
  52        u64                             size;
  53};
  54
  55struct perf_header;
  56
  57int perf_file_header__read(struct perf_file_header *header,
  58                           struct perf_header *ph, int fd);
  59
  60struct perf_header {
  61        int                     frozen;
  62        bool                    needs_swap;
  63        s64                     attr_offset;
  64        u64                     data_offset;
  65        u64                     data_size;
  66        u64                     event_offset;
  67        u64                     event_size;
  68        DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS);
  69};
  70
  71struct perf_evlist;
  72struct perf_session;
  73
  74int perf_session__read_header(struct perf_session *session, int fd);
  75int perf_session__write_header(struct perf_session *session,
  76                               struct perf_evlist *evlist,
  77                               int fd, bool at_exit);
  78int perf_header__write_pipe(int fd);
  79
  80int perf_header__push_event(u64 id, const char *name);
  81char *perf_header__find_event(u64 id);
  82
  83void perf_header__set_feat(struct perf_header *header, int feat);
  84void perf_header__clear_feat(struct perf_header *header, int feat);
  85bool perf_header__has_feat(const struct perf_header *header, int feat);
  86
  87int perf_header__set_cmdline(int argc, const char **argv);
  88
  89int perf_header__process_sections(struct perf_header *header, int fd,
  90                                  void *data,
  91                                  int (*process)(struct perf_file_section *section,
  92                                  struct perf_header *ph,
  93                                  int feat, int fd, void *data));
  94
  95int perf_header__fprintf_info(struct perf_session *s, FILE *fp, bool full);
  96
  97int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
  98                          const char *name, bool is_kallsyms);
  99int build_id_cache__remove_s(const char *sbuild_id, const char *debugdir);
 100
 101int perf_event__synthesize_attr(struct perf_tool *tool,
 102                                struct perf_event_attr *attr, u16 ids, u64 *id,
 103                                perf_event__handler_t process);
 104int perf_event__synthesize_attrs(struct perf_tool *tool,
 105                                 struct perf_session *session,
 106                                 perf_event__handler_t process);
 107int perf_event__process_attr(union perf_event *event, struct perf_evlist **pevlist);
 108
 109int perf_event__synthesize_event_type(struct perf_tool *tool,
 110                                      u64 event_id, char *name,
 111                                      perf_event__handler_t process,
 112                                      struct machine *machine);
 113int perf_event__synthesize_event_types(struct perf_tool *tool,
 114                                       perf_event__handler_t process,
 115                                       struct machine *machine);
 116int perf_event__process_event_type(struct perf_tool *tool,
 117                                   union perf_event *event);
 118
 119int perf_event__synthesize_tracing_data(struct perf_tool *tool,
 120                                        int fd, struct perf_evlist *evlist,
 121                                        perf_event__handler_t process);
 122int perf_event__process_tracing_data(union perf_event *event,
 123                                     struct perf_session *session);
 124
 125int perf_event__synthesize_build_id(struct perf_tool *tool,
 126                                    struct dso *pos, u16 misc,
 127                                    perf_event__handler_t process,
 128                                    struct machine *machine);
 129int perf_event__process_build_id(struct perf_tool *tool,
 130                                 union perf_event *event,
 131                                 struct perf_session *session);
 132
 133/*
 134 * arch specific callback
 135 */
 136int get_cpuid(char *buffer, size_t sz);
 137
 138#endif /* __PERF_HEADER_H */
 139