]> git.karo-electronics.de Git - karo-tx-linux.git/blob - tools/perf/util/util.h
perf kvm: Make function only used by 'perf kvm' static
[karo-tx-linux.git] / tools / perf / util / util.h
1 #ifndef GIT_COMPAT_UTIL_H
2 #define GIT_COMPAT_UTIL_H
3
4 #define _ALL_SOURCE 1
5 #define _BSD_SOURCE 1
6 /* glibc 2.20 deprecates _BSD_SOURCE in favour of _DEFAULT_SOURCE */
7 #define _DEFAULT_SOURCE 1
8 #define HAS_BOOL
9
10 #include <unistd.h>
11 #include <stdio.h>
12 #include <sys/stat.h>
13 #include <sys/statfs.h>
14 #include <fcntl.h>
15 #include <stdbool.h>
16 #include <stddef.h>
17 #include <stdlib.h>
18 #include <stdarg.h>
19 #include <string.h>
20 #include <limits.h>
21 #include <sys/param.h>
22 #include <sys/types.h>
23 #include <assert.h>
24 #include <sys/wait.h>
25 #include <poll.h>
26 #include <sys/socket.h>
27 #include <sys/ioctl.h>
28 #include <linux/kernel.h>
29 #include <linux/types.h>
30
31 extern char buildid_dir[];
32
33 #ifdef __GNUC__
34 #define NORETURN __attribute__((__noreturn__))
35 #else
36 #define NORETURN
37 #ifndef __attribute__
38 #define __attribute__(x)
39 #endif
40 #endif
41
42 #define PERF_GTK_DSO  "libperf-gtk.so"
43
44 /* General helper functions */
45 void usage(const char *err) NORETURN;
46 void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2)));
47 int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
48 void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
49
50 void set_warning_routine(void (*routine)(const char *err, va_list params));
51
52 int prefixcmp(const char *str, const char *prefix);
53 void set_buildid_dir(const char *dir);
54
55 static inline void *zalloc(size_t size)
56 {
57         return calloc(1, size);
58 }
59
60 #define zfree(ptr) ({ free(*ptr); *ptr = NULL; })
61
62 struct dirent;
63 struct strlist;
64
65 int mkdir_p(char *path, mode_t mode);
66 int rm_rf(const char *path);
67 struct strlist *lsdir(const char *name, bool (*filter)(const char *, struct dirent *));
68 bool lsdir_no_dot_filter(const char *name, struct dirent *d);
69 int copyfile(const char *from, const char *to);
70 int copyfile_mode(const char *from, const char *to, mode_t mode);
71 int copyfile_offset(int fromfd, loff_t from_ofs, int tofd, loff_t to_ofs, u64 size);
72
73 ssize_t readn(int fd, void *buf, size_t n);
74 ssize_t writen(int fd, void *buf, size_t n);
75
76 struct perf_event_attr;
77
78 void event_attr_init(struct perf_event_attr *attr);
79
80 size_t hex_width(u64 v);
81 int hex2u64(const char *ptr, u64 *val);
82
83 void dump_stack(void);
84 void sighandler_dump_stack(int sig);
85
86 extern unsigned int page_size;
87 extern int cacheline_size;
88 extern int sysctl_perf_event_max_stack;
89 extern int sysctl_perf_event_max_contexts_per_stack;
90
91 struct parse_tag {
92         char tag;
93         int mult;
94 };
95
96 unsigned long parse_tag_value(const char *str, struct parse_tag *tags);
97
98 int perf_event_paranoid(void);
99
100 void mem_bswap_64(void *src, int byte_size);
101 void mem_bswap_32(void *src, int byte_size);
102
103 bool find_process(const char *name);
104
105 #ifdef HAVE_ZLIB_SUPPORT
106 int gzip_decompress_to_file(const char *input, int output_fd);
107 #endif
108
109 #ifdef HAVE_LZMA_SUPPORT
110 int lzma_decompress_to_file(const char *input, int output_fd);
111 #endif
112
113 int get_stack_size(const char *str, unsigned long *_size);
114
115 int fetch_kernel_version(unsigned int *puint,
116                          char *str, size_t str_sz);
117 #define KVER_VERSION(x)         (((x) >> 16) & 0xff)
118 #define KVER_PATCHLEVEL(x)      (((x) >> 8) & 0xff)
119 #define KVER_SUBLEVEL(x)        ((x) & 0xff)
120 #define KVER_FMT        "%d.%d.%d"
121 #define KVER_PARAM(x)   KVER_VERSION(x), KVER_PATCHLEVEL(x), KVER_SUBLEVEL(x)
122
123 const char *perf_tip(const char *dirpath);
124
125 #ifndef HAVE_SCHED_GETCPU_SUPPORT
126 int sched_getcpu(void);
127 #endif
128
129 #endif /* GIT_COMPAT_UTIL_H */