linux/tools/perf/util/data.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __PERF_DATA_H
   3#define __PERF_DATA_H
   4
   5#include <stdbool.h>
   6
   7enum perf_data_mode {
   8        PERF_DATA_MODE_WRITE,
   9        PERF_DATA_MODE_READ,
  10};
  11
  12struct perf_data_file {
  13        char            *path;
  14        int              fd;
  15        unsigned long    size;
  16};
  17
  18struct perf_data {
  19        const char              *path;
  20        struct perf_data_file    file;
  21        bool                     is_pipe;
  22        bool                     is_dir;
  23        bool                     force;
  24        enum perf_data_mode      mode;
  25
  26        struct {
  27                u64                      version;
  28                struct perf_data_file   *files;
  29                int                      nr;
  30        } dir;
  31};
  32
  33static inline bool perf_data__is_read(struct perf_data *data)
  34{
  35        return data->mode == PERF_DATA_MODE_READ;
  36}
  37
  38static inline bool perf_data__is_write(struct perf_data *data)
  39{
  40        return data->mode == PERF_DATA_MODE_WRITE;
  41}
  42
  43static inline int perf_data__is_pipe(struct perf_data *data)
  44{
  45        return data->is_pipe;
  46}
  47
  48static inline bool perf_data__is_dir(struct perf_data *data)
  49{
  50        return data->is_dir;
  51}
  52
  53static inline int perf_data__fd(struct perf_data *data)
  54{
  55        return data->file.fd;
  56}
  57
  58int perf_data__open(struct perf_data *data);
  59void perf_data__close(struct perf_data *data);
  60ssize_t perf_data__write(struct perf_data *data,
  61                              void *buf, size_t size);
  62ssize_t perf_data_file__write(struct perf_data_file *file,
  63                              void *buf, size_t size);
  64/*
  65 * If at_exit is set, only rename current perf.data to
  66 * perf.data.<postfix>, continue write on original data.
  67 * Set at_exit when flushing the last output.
  68 *
  69 * Return value is fd of new output.
  70 */
  71int perf_data__switch(struct perf_data *data,
  72                           const char *postfix,
  73                           size_t pos, bool at_exit, char **new_filepath);
  74
  75int perf_data__create_dir(struct perf_data *data, int nr);
  76int perf_data__open_dir(struct perf_data *data);
  77void perf_data__close_dir(struct perf_data *data);
  78int perf_data__update_dir(struct perf_data *data);
  79unsigned long perf_data__size(struct perf_data *data);
  80#endif /* __PERF_DATA_H */
  81