#ifndef _PERF_PERF_H #define _PERF_PERF_H #include #include #include #include extern bool test_attr__enabled; void test_attr__init(void); void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu, int fd, int group_fd, unsigned long flags); #define HAVE_ATTR_TEST #include "perf-sys.h" static inline unsigned long long rdclock(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000000000ULL + ts.tv_nsec; } #define MAX_NR_CPUS 1024 extern const char *input_name; extern bool perf_host, perf_guest; extern const char perf_version_string[]; void pthread__unblock_sigwinch(void); #include "util/target.h" struct record_opts { struct target target; bool group; bool inherit_stat; bool no_buffering; bool no_inherit; bool no_inherit_set; bool no_samples; bool raw_samples; bool sample_address; bool sample_weight; bool sample_time; bool sample_time_set; bool sample_cpu; bool period; bool running_time; bool full_auxtrace; bool auxtrace_snapshot_mode; bool record_switch_events; bool all_kernel; bool all_user; bool tail_synthesize; bool overwrite; bool ignore_missing_thread; unsigned int freq; unsigned int mmap_pages; unsigned int auxtrace_mmap_pages; unsigned int user_freq; u64 branch_stack; u64 sample_intr_regs; u64 default_interval; u64 user_interval; size_t auxtrace_snapshot_size; const char *auxtrace_snapshot_opts; bool sample_transaction; unsigned initial_delay; bool use_clockid; clockid_t clockid; unsigned int proc_map_timeout; }; struct option; extern const char * const *record_usage; extern struct option *record_options; #endif ass='active' href='/cgit.cgi/linux/net-next.git/commit/tools/thermal/tmon?id=79c6f448c8b79c321e4a1f31f98194e4f6b6cae7'>commitdiff
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2017-01-30 19:27:10 -0500
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2017-01-31 09:13:49 -0500
commit79c6f448c8b79c321e4a1f31f98194e4f6b6cae7 (patch)
tree370efda701f03cccf21e02bb1fdd3b852547d75c /tools/thermal/tmon
parent0c744ea4f77d72b3dcebb7a8f2684633ec79be88 (diff)
tracing: Fix hwlat kthread migration
The hwlat tracer creates a kernel thread at start of the tracer. It is pinned to a single CPU and will move to the next CPU after each period of running. If the user modifies the migration thread's affinity, it will not change after that happens. The original code created the thread at the first instance it was called, but later was changed to destroy the thread after the tracer was finished, and would not be created until the next instance of the tracer was established. The code that initialized the affinity was only called on the initial instantiation of the tracer. After that, it was not initialized, and the previous affinity did not match the current newly created one, making it appear that the user modified the thread's affinity when it did not, and the thread failed to migrate again. Cc: stable@vger.kernel.org Fixes: 0330f7aa8ee6 ("tracing: Have hwlat trace migrate across tracing_cpumask CPUs") Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'tools/thermal/tmon')