Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/tools/perf/util/cache.h
10821 views
1
#ifndef __PERF_CACHE_H
2
#define __PERF_CACHE_H
3
4
#include <stdbool.h>
5
#include "util.h"
6
#include "strbuf.h"
7
#include "../perf.h"
8
9
#define CMD_EXEC_PATH "--exec-path"
10
#define CMD_PERF_DIR "--perf-dir="
11
#define CMD_WORK_TREE "--work-tree="
12
#define CMD_DEBUGFS_DIR "--debugfs-dir="
13
14
#define PERF_DIR_ENVIRONMENT "PERF_DIR"
15
#define PERF_WORK_TREE_ENVIRONMENT "PERF_WORK_TREE"
16
#define EXEC_PATH_ENVIRONMENT "PERF_EXEC_PATH"
17
#define DEFAULT_PERF_DIR_ENVIRONMENT ".perf"
18
#define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR"
19
20
typedef int (*config_fn_t)(const char *, const char *, void *);
21
extern int perf_default_config(const char *, const char *, void *);
22
extern int perf_config(config_fn_t fn, void *);
23
extern int perf_config_int(const char *, const char *);
24
extern int perf_config_bool(const char *, const char *);
25
extern int config_error_nonbool(const char *);
26
extern const char *perf_config_dirname(const char *, const char *);
27
28
/* pager.c */
29
extern void setup_pager(void);
30
extern const char *pager_program;
31
extern int pager_in_use(void);
32
extern int pager_use_color;
33
34
extern int use_browser;
35
36
#ifdef NO_NEWT_SUPPORT
37
static inline void setup_browser(bool fallback_to_pager)
38
{
39
if (fallback_to_pager)
40
setup_pager();
41
}
42
static inline void exit_browser(bool wait_for_ok __used) {}
43
#else
44
void setup_browser(bool fallback_to_pager);
45
void exit_browser(bool wait_for_ok);
46
#endif
47
48
char *alias_lookup(const char *alias);
49
int split_cmdline(char *cmdline, const char ***argv);
50
51
#define alloc_nr(x) (((x)+16)*3/2)
52
53
/*
54
* Realloc the buffer pointed at by variable 'x' so that it can hold
55
* at least 'nr' entries; the number of entries currently allocated
56
* is 'alloc', using the standard growing factor alloc_nr() macro.
57
*
58
* DO NOT USE any expression with side-effect for 'x' or 'alloc'.
59
*/
60
#define ALLOC_GROW(x, nr, alloc) \
61
do { \
62
if ((nr) > alloc) { \
63
if (alloc_nr(alloc) < (nr)) \
64
alloc = (nr); \
65
else \
66
alloc = alloc_nr(alloc); \
67
x = xrealloc((x), alloc * sizeof(*(x))); \
68
} \
69
} while(0)
70
71
72
static inline int is_absolute_path(const char *path)
73
{
74
return path[0] == '/';
75
}
76
77
const char *make_nonrelative_path(const char *path);
78
char *strip_path_suffix(const char *path, const char *suffix);
79
80
extern char *mkpath(const char *fmt, ...) __attribute__((format (printf, 1, 2)));
81
extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2)));
82
83
extern char *perf_pathdup(const char *fmt, ...)
84
__attribute__((format (printf, 1, 2)));
85
86
#ifdef NO_STRLCPY
87
extern size_t strlcpy(char *dest, const char *src, size_t size);
88
#endif
89
90
#endif /* __PERF_CACHE_H */
91
92