| John Kacur | 8b40f52 | 2009-09-24 18:02:18 +0200 | [diff] [blame] | 1 | #ifndef __PERF_CACHE_H | 
|  | 2 | #define __PERF_CACHE_H | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 3 |  | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 4 | #include <stdbool.h> | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 5 | #include "util.h" | 
|  | 6 | #include "strbuf.h" | 
| Ingo Molnar | f37a291 | 2009-07-01 12:37:06 +0200 | [diff] [blame] | 7 | #include "../perf.h" | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 8 |  | 
| Vincent Legoll | cfed95a | 2009-10-13 10:18:16 +0200 | [diff] [blame] | 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 |  | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 14 | #define PERF_DIR_ENVIRONMENT "PERF_DIR" | 
|  | 15 | #define PERF_WORK_TREE_ENVIRONMENT "PERF_WORK_TREE" | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 16 | #define EXEC_PATH_ENVIRONMENT "PERF_EXEC_PATH" | 
| Arnaldo Carvalho de Melo | a41794c | 2010-05-18 18:29:23 -0300 | [diff] [blame] | 17 | #define DEFAULT_PERF_DIR_ENVIRONMENT ".perf" | 
| Jason Baron | 5beeded | 2009-07-21 14:16:29 -0400 | [diff] [blame] | 18 | #define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR" | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 19 |  | 
|  | 20 | typedef int (*config_fn_t)(const char *, const char *, void *); | 
|  | 21 | extern int perf_default_config(const char *, const char *, void *); | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 22 | extern int perf_config(config_fn_t fn, void *); | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 23 | extern int perf_config_int(const char *, const char *); | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 24 | extern int perf_config_bool(const char *, const char *); | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 25 | extern int config_error_nonbool(const char *); | 
| Stephane Eranian | 45de34b | 2010-06-01 21:25:01 +0200 | [diff] [blame] | 26 | extern const char *perf_config_dirname(const char *, const char *); | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 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 |  | 
| Arnaldo Carvalho de Melo | 5d06e69 | 2010-05-20 22:01:10 -0300 | [diff] [blame] | 34 | extern int use_browser; | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 35 |  | 
|  | 36 | #ifdef NO_NEWT_SUPPORT | 
| Arnaldo Carvalho de Melo | 229ade9 | 2011-01-31 18:08:39 -0200 | [diff] [blame] | 37 | static inline void setup_browser(bool fallback_to_pager) | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 38 | { | 
| Arnaldo Carvalho de Melo | 229ade9 | 2011-01-31 18:08:39 -0200 | [diff] [blame] | 39 | if (fallback_to_pager) | 
|  | 40 | setup_pager(); | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 41 | } | 
| Arnaldo Carvalho de Melo | f3a1f0e | 2010-03-22 13:10:25 -0300 | [diff] [blame] | 42 | static inline void exit_browser(bool wait_for_ok __used) {} | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 43 | #else | 
| Arnaldo Carvalho de Melo | 229ade9 | 2011-01-31 18:08:39 -0200 | [diff] [blame] | 44 | void setup_browser(bool fallback_to_pager); | 
| Arnaldo Carvalho de Melo | f3a1f0e | 2010-03-22 13:10:25 -0300 | [diff] [blame] | 45 | void exit_browser(bool wait_for_ok); | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 46 | #endif | 
|  | 47 |  | 
| Ingo Molnar | 0780060 | 2009-04-20 15:00:56 +0200 | [diff] [blame] | 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 | } | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 76 |  | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 77 | const char *make_nonrelative_path(const char *path); | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 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 |  | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 83 | extern char *perf_pathdup(const char *fmt, ...) | 
|  | 84 | __attribute__((format (printf, 1, 2))); | 
|  | 85 |  | 
| Kirill A. Shutemov | f4e7ac0 | 2010-08-21 03:38:20 +0300 | [diff] [blame] | 86 | #ifdef NO_STRLCPY | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 87 | extern size_t strlcpy(char *dest, const char *src, size_t size); | 
| Kirill A. Shutemov | f4e7ac0 | 2010-08-21 03:38:20 +0300 | [diff] [blame] | 88 | #endif | 
| Ingo Molnar | 6f06ccb | 2009-04-20 15:22:22 +0200 | [diff] [blame] | 89 |  | 
| John Kacur | 8b40f52 | 2009-09-24 18:02:18 +0200 | [diff] [blame] | 90 | #endif /* __PERF_CACHE_H */ |