Commit | Line | Data |
---|---|---|
f5fc1412 JO |
1 | #ifndef __PERF_DATA_H |
2 | #define __PERF_DATA_H | |
3 | ||
4 | #include <stdbool.h> | |
5 | ||
6 | enum perf_data_mode { | |
7 | PERF_DATA_MODE_WRITE, | |
8 | PERF_DATA_MODE_READ, | |
9 | }; | |
10 | ||
11 | struct perf_data_file { | |
6f9a317f JO |
12 | const char *path; |
13 | int fd; | |
14 | bool is_pipe; | |
15 | bool force; | |
16 | unsigned long size; | |
17 | enum perf_data_mode mode; | |
f5fc1412 JO |
18 | }; |
19 | ||
20 | static inline bool perf_data_file__is_read(struct perf_data_file *file) | |
21 | { | |
22 | return file->mode == PERF_DATA_MODE_READ; | |
23 | } | |
24 | ||
25 | static inline bool perf_data_file__is_write(struct perf_data_file *file) | |
26 | { | |
27 | return file->mode == PERF_DATA_MODE_WRITE; | |
28 | } | |
29 | ||
cc9784bd JO |
30 | static inline int perf_data_file__is_pipe(struct perf_data_file *file) |
31 | { | |
32 | return file->is_pipe; | |
33 | } | |
34 | ||
35 | static inline int perf_data_file__fd(struct perf_data_file *file) | |
36 | { | |
37 | return file->fd; | |
38 | } | |
39 | ||
40 | static inline unsigned long perf_data_file__size(struct perf_data_file *file) | |
41 | { | |
42 | return file->size; | |
43 | } | |
44 | ||
6a4d98d7 JO |
45 | int perf_data_file__open(struct perf_data_file *file); |
46 | void perf_data_file__close(struct perf_data_file *file); | |
6f9a317f JO |
47 | ssize_t perf_data_file__write(struct perf_data_file *file, |
48 | void *buf, size_t size); | |
040f9915 WN |
49 | /* |
50 | * If at_exit is set, only rename current perf.data to | |
51 | * perf.data.<postfix>, continue write on original file. | |
52 | * Set at_exit when flushing the last output. | |
53 | * | |
54 | * Return value is fd of new output. | |
55 | */ | |
56 | int perf_data_file__switch(struct perf_data_file *file, | |
57 | const char *postfix, | |
58 | size_t pos, bool at_exit); | |
f5fc1412 | 59 | #endif /* __PERF_DATA_H */ |