Loading tools/perf/builtin-trace.c +22 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,10 @@ # define MADV_UNMERGEABLE 13 #endif #ifndef EFD_SEMAPHORE # define EFD_SEMAPHORE 1 #endif struct tp_field { int offset; union { Loading Loading @@ -279,6 +283,11 @@ static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size, #define SCA_STRARRAY syscall_arg__scnprintf_strarray #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches as soon as the ioctl beautifier * gets rewritten to support all arches. */ static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size, struct syscall_arg *arg) { Loading @@ -286,6 +295,7 @@ static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size, } #define SCA_STRHEXARRAY syscall_arg__scnprintf_strhexarray #endif /* defined(__i386__) || defined(__x86_64__) */ static size_t syscall_arg__scnprintf_fd(char *bf, size_t size, struct syscall_arg *arg); Loading Loading @@ -839,6 +849,10 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal #define SCA_SIGNUM syscall_arg__scnprintf_signum #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches. */ #define TCGETS 0x5401 static const char *tioctls[] = { Loading @@ -860,6 +874,7 @@ static const char *tioctls[] = { }; static DEFINE_STRARRAY_OFFSET(tioctls, 0x5401); #endif /* defined(__i386__) || defined(__x86_64__) */ #define STRARRAY(arg, name, array) \ .arg_scnprintf = { [arg] = SCA_STRARRAY, }, \ Loading Loading @@ -941,9 +956,16 @@ static struct syscall_fmt { { .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), }, { .name = "ioctl", .errmsg = true, .arg_scnprintf = { [0] = SCA_FD, /* fd */ #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches. */ [1] = SCA_STRHEXARRAY, /* cmd */ [2] = SCA_HEX, /* arg */ }, .arg_parm = { [1] = &strarray__tioctls, /* cmd */ }, }, #else [2] = SCA_HEX, /* arg */ }, }, #endif { .name = "kill", .errmsg = true, .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, { .name = "linkat", .errmsg = true, Loading tools/perf/util/parse-events.c +15 −2 Original line number Diff line number Diff line Loading @@ -1091,12 +1091,12 @@ int is_valid_tracepoint(const char *event_string) static bool is_event_supported(u8 type, unsigned config) { bool ret = true; int open_return; struct perf_evsel *evsel; struct perf_event_attr attr = { .type = type, .config = config, .disabled = 1, .exclude_kernel = 1, }; struct { struct thread_map map; Loading @@ -1108,7 +1108,20 @@ static bool is_event_supported(u8 type, unsigned config) evsel = perf_evsel__new(&attr); if (evsel) { open_return = perf_evsel__open(evsel, NULL, &tmap.map); ret = open_return >= 0; if (open_return == -EACCES) { /* * This happens if the paranoid value * /proc/sys/kernel/perf_event_paranoid is set to 2 * Re-run with exclude_kernel set; we don't do that * by default as some ARM machines do not support it. * */ evsel->attr.exclude_kernel = 1; ret = perf_evsel__open(evsel, NULL, &tmap.map) >= 0; } perf_evsel__delete(evsel); } Loading tools/perf/util/probe-event.c +1 −1 Original line number Diff line number Diff line Loading @@ -336,8 +336,8 @@ static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs, return ret; for (i = 0; i < ntevs && ret >= 0; i++) { /* point.address is the addres of point.symbol + point.offset */ offset = tevs[i].point.address - stext; offset += tevs[i].point.offset; tevs[i].point.offset = 0; zfree(&tevs[i].point.symbol); ret = e_snprintf(buf, 32, "0x%lx", offset); Loading tools/perf/util/session.c +6 −0 Original line number Diff line number Diff line Loading @@ -1008,6 +1008,12 @@ static int perf_session__process_user_event(struct perf_session *session, union if (err == 0) perf_session__set_id_hdr_size(session); return err; case PERF_RECORD_HEADER_EVENT_TYPE: /* * Depreceated, but we need to handle it for sake * of old data files create in pipe mode. */ return 0; case PERF_RECORD_HEADER_TRACING_DATA: /* setup for reading amidst mmap */ lseek(fd, file_offset, SEEK_SET); Loading Loading
tools/perf/builtin-trace.c +22 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,10 @@ # define MADV_UNMERGEABLE 13 #endif #ifndef EFD_SEMAPHORE # define EFD_SEMAPHORE 1 #endif struct tp_field { int offset; union { Loading Loading @@ -279,6 +283,11 @@ static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size, #define SCA_STRARRAY syscall_arg__scnprintf_strarray #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches as soon as the ioctl beautifier * gets rewritten to support all arches. */ static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size, struct syscall_arg *arg) { Loading @@ -286,6 +295,7 @@ static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size, } #define SCA_STRHEXARRAY syscall_arg__scnprintf_strhexarray #endif /* defined(__i386__) || defined(__x86_64__) */ static size_t syscall_arg__scnprintf_fd(char *bf, size_t size, struct syscall_arg *arg); Loading Loading @@ -839,6 +849,10 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal #define SCA_SIGNUM syscall_arg__scnprintf_signum #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches. */ #define TCGETS 0x5401 static const char *tioctls[] = { Loading @@ -860,6 +874,7 @@ static const char *tioctls[] = { }; static DEFINE_STRARRAY_OFFSET(tioctls, 0x5401); #endif /* defined(__i386__) || defined(__x86_64__) */ #define STRARRAY(arg, name, array) \ .arg_scnprintf = { [arg] = SCA_STRARRAY, }, \ Loading Loading @@ -941,9 +956,16 @@ static struct syscall_fmt { { .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), }, { .name = "ioctl", .errmsg = true, .arg_scnprintf = { [0] = SCA_FD, /* fd */ #if defined(__i386__) || defined(__x86_64__) /* * FIXME: Make this available to all arches. */ [1] = SCA_STRHEXARRAY, /* cmd */ [2] = SCA_HEX, /* arg */ }, .arg_parm = { [1] = &strarray__tioctls, /* cmd */ }, }, #else [2] = SCA_HEX, /* arg */ }, }, #endif { .name = "kill", .errmsg = true, .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, { .name = "linkat", .errmsg = true, Loading
tools/perf/util/parse-events.c +15 −2 Original line number Diff line number Diff line Loading @@ -1091,12 +1091,12 @@ int is_valid_tracepoint(const char *event_string) static bool is_event_supported(u8 type, unsigned config) { bool ret = true; int open_return; struct perf_evsel *evsel; struct perf_event_attr attr = { .type = type, .config = config, .disabled = 1, .exclude_kernel = 1, }; struct { struct thread_map map; Loading @@ -1108,7 +1108,20 @@ static bool is_event_supported(u8 type, unsigned config) evsel = perf_evsel__new(&attr); if (evsel) { open_return = perf_evsel__open(evsel, NULL, &tmap.map); ret = open_return >= 0; if (open_return == -EACCES) { /* * This happens if the paranoid value * /proc/sys/kernel/perf_event_paranoid is set to 2 * Re-run with exclude_kernel set; we don't do that * by default as some ARM machines do not support it. * */ evsel->attr.exclude_kernel = 1; ret = perf_evsel__open(evsel, NULL, &tmap.map) >= 0; } perf_evsel__delete(evsel); } Loading
tools/perf/util/probe-event.c +1 −1 Original line number Diff line number Diff line Loading @@ -336,8 +336,8 @@ static int add_exec_to_probe_trace_events(struct probe_trace_event *tevs, return ret; for (i = 0; i < ntevs && ret >= 0; i++) { /* point.address is the addres of point.symbol + point.offset */ offset = tevs[i].point.address - stext; offset += tevs[i].point.offset; tevs[i].point.offset = 0; zfree(&tevs[i].point.symbol); ret = e_snprintf(buf, 32, "0x%lx", offset); Loading
tools/perf/util/session.c +6 −0 Original line number Diff line number Diff line Loading @@ -1008,6 +1008,12 @@ static int perf_session__process_user_event(struct perf_session *session, union if (err == 0) perf_session__set_id_hdr_size(session); return err; case PERF_RECORD_HEADER_EVENT_TYPE: /* * Depreceated, but we need to handle it for sake * of old data files create in pipe mode. */ return 0; case PERF_RECORD_HEADER_TRACING_DATA: /* setup for reading amidst mmap */ lseek(fd, file_offset, SEEK_SET); Loading