~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/util.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __PERF_UTIL_H
  3 #define __PERF_UTIL_H
  4 
  5 #define _BSD_SOURCE 1
  6 /* glibc 2.20 deprecates _BSD_SOURCE in favour of _DEFAULT_SOURCE */
  7 #define _DEFAULT_SOURCE 1
  8 
  9 #include <dirent.h>
 10 #include <fcntl.h>
 11 #include <stdbool.h>
 12 #include <stddef.h>
 13 #include <linux/compiler.h>
 14 #include <sys/types.h>
 15 #ifndef __cplusplus
 16 #include <internal/cpumap.h>
 17 #endif
 18 
 19 extern const char perf_usage_string[];
 20 extern const char perf_more_info_string[];
 21 
 22 extern const char *input_name;
 23 
 24 extern bool perf_host;
 25 extern bool perf_guest;
 26 
 27 /* General helper functions */
 28 void usage(const char *err) __noreturn;
 29 void die(const char *err, ...) __noreturn __printf(1, 2);
 30 
 31 struct dirent;
 32 struct strlist;
 33 
 34 int mkdir_p(char *path, mode_t mode);
 35 int rm_rf(const char *path);
 36 int rm_rf_perf_data(const char *path);
 37 struct strlist *lsdir(const char *name, bool (*filter)(const char *, struct dirent *));
 38 bool lsdir_no_dot_filter(const char *name, struct dirent *d);
 39 
 40 size_t hex_width(u64 v);
 41 
 42 int sysctl__max_stack(void);
 43 
 44 bool sysctl__nmi_watchdog_enabled(void);
 45 
 46 int fetch_kernel_version(unsigned int *puint,
 47                          char *str, size_t str_sz);
 48 #define KVER_VERSION(x)         (((x) >> 16) & 0xff)
 49 #define KVER_PATCHLEVEL(x)      (((x) >> 8) & 0xff)
 50 #define KVER_SUBLEVEL(x)        ((x) & 0xff)
 51 #define KVER_FMT        "%d.%d.%d"
 52 #define KVER_PARAM(x)   KVER_VERSION(x), KVER_PATCHLEVEL(x), KVER_SUBLEVEL(x)
 53 
 54 int perf_tip(char **strp, const char *dirpath);
 55 
 56 #ifndef HAVE_SCHED_GETCPU_SUPPORT
 57 int sched_getcpu(void);
 58 #endif
 59 
 60 #ifndef HAVE_SCANDIRAT_SUPPORT
 61 int scandirat(int dirfd, const char *dirp,
 62               struct dirent ***namelist,
 63               int (*filter)(const struct dirent *),
 64               int (*compar)(const struct dirent **, const struct dirent **));
 65 #endif
 66 
 67 extern bool perf_singlethreaded;
 68 
 69 void perf_set_singlethreaded(void);
 70 void perf_set_multithreaded(void);
 71 
 72 char *perf_exe(char *buf, int len);
 73 
 74 #ifndef O_CLOEXEC
 75 #ifdef __sparc__
 76 #define O_CLOEXEC      0x400000
 77 #elif defined(__alpha__) || defined(__hppa__)
 78 #define O_CLOEXEC      010000000
 79 #else
 80 #define O_CLOEXEC      02000000
 81 #endif
 82 #endif
 83 
 84 extern bool test_attr__enabled;
 85 void test_attr__ready(void);
 86 void test_attr__init(void);
 87 struct perf_event_attr;
 88 void test_attr__open(struct perf_event_attr *attr, pid_t pid, struct perf_cpu cpu,
 89                      int fd, int group_fd, unsigned long flags);
 90 
 91 struct perf_debuginfod {
 92         const char      *urls;
 93         bool             set;
 94 };
 95 void perf_debuginfod_setup(struct perf_debuginfod *di);
 96 
 97 char *filename_with_chroot(int pid, const char *filename);
 98 
 99 int do_realloc_array_as_needed(void **arr, size_t *arr_sz, size_t x,
100                                size_t msz, const void *init_val);
101 
102 #define realloc_array_as_needed(a, n, x, v) ({                  \
103         typeof(x) __x = (x);                                    \
104         __x >= (n) ?                                            \
105                 do_realloc_array_as_needed((void **)&(a),       \
106                                            &(n),                \
107                                            __x,                 \
108                                            sizeof(*(a)),        \
109                                            (const void *)(v)) : \
110                 0;                                              \
111         })
112 
113 static inline bool host_is_bigendian(void)
114 {
115 #ifdef __BYTE_ORDER__
116 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
117         return false;
118 #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
119         return true;
120 #else
121 #error "Unrecognized __BYTE_ORDER__"
122 #endif
123 #else /* !__BYTE_ORDER__ */
124         unsigned char str[] = { 0x1, 0x2, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0};
125         unsigned int *ptr;
126 
127         ptr = (unsigned int *)(void *)str;
128         return *ptr == 0x01020304;
129 #endif
130 }
131 
132 #endif /* __PERF_UTIL_H */
133 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php