diff options
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/Makefile | 8 | ||||
| -rw-r--r-- | tools/perf/bench/bench.h | 24 | ||||
| -rw-r--r-- | tools/perf/builtin-record.c | 6 | ||||
| -rw-r--r-- | tools/perf/perf.h | 12 | ||||
| -rw-r--r-- | tools/perf/util/evlist.c | 3 | ||||
| -rw-r--r-- | tools/perf/util/hist.h | 5 | ||||
| -rw-r--r-- | tools/perf/util/strlist.c | 2 | 
7 files changed, 52 insertions, 8 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index a2108ca1cc1..bb74c79cd16 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -95,7 +95,7 @@ ifeq ("$(origin DEBUG)", "command line")    PERF_DEBUG = $(DEBUG)  endif  ifndef PERF_DEBUG -  CFLAGS_OPTIMIZE = -O6 -D_FORTIFY_SOURCE=2 +  CFLAGS_OPTIMIZE = -O6  endif  ifdef PARSER_DEBUG @@ -180,6 +180,12 @@ ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -Wvolatile-register-var,-W         CFLAGS := $(CFLAGS) -Wvolatile-register-var  endif +ifndef PERF_DEBUG +	ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -D_FORTIFY_SOURCE=2,-D_FORTIFY_SOURCE=2),y) +		CFLAGS := $(CFLAGS) -D_FORTIFY_SOURCE=2 +	endif +endif +  ### --- END CONFIGURATION SECTION ---  ifeq ($(srctree),) diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h index a5223e6a7b4..0fdc85269c4 100644 --- a/tools/perf/bench/bench.h +++ b/tools/perf/bench/bench.h @@ -1,6 +1,30 @@  #ifndef BENCH_H  #define BENCH_H +/* + * The madvise transparent hugepage constants were added in glibc + * 2.13. For compatibility with older versions of glibc, define these + * tokens if they are not already defined. + * + * PA-RISC uses different madvise values from other architectures and + * needs to be special-cased. + */ +#ifdef __hppa__ +# ifndef MADV_HUGEPAGE +#  define MADV_HUGEPAGE		67 +# endif +# ifndef MADV_NOHUGEPAGE +#  define MADV_NOHUGEPAGE	68 +# endif +#else +# ifndef MADV_HUGEPAGE +#  define MADV_HUGEPAGE		14 +# endif +# ifndef MADV_NOHUGEPAGE +#  define MADV_NOHUGEPAGE	15 +# endif +#endif +  extern int bench_numa(int argc, const char **argv, const char *prefix);  extern int bench_sched_messaging(int argc, const char **argv, const char *prefix);  extern int bench_sched_pipe(int argc, const char **argv, const char *prefix); diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 774c90713a5..f1a939ebc19 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -573,13 +573,15 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)  					 perf_event__synthesize_guest_os, tool);  	} -	if (!opts->target.system_wide) +	if (perf_target__has_task(&opts->target))  		err = perf_event__synthesize_thread_map(tool, evsel_list->threads,  						  process_synthesized_event,  						  machine); -	else +	else if (perf_target__has_cpu(&opts->target))  		err = perf_event__synthesize_threads(tool, process_synthesized_event,  					       machine); +	else /* command specified */ +		err = 0;  	if (err != 0)  		goto out_delete_session; diff --git a/tools/perf/perf.h b/tools/perf/perf.h index c2206c87fc9..74659ecf93e 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h @@ -94,6 +94,18 @@  #define CPUINFO_PROC	"cpu model"  #endif +#ifdef __arc__ +#define rmb()		asm volatile("" ::: "memory") +#define cpu_relax()	rmb() +#define CPUINFO_PROC	"Processor" +#endif + +#ifdef __metag__ +#define rmb()		asm volatile("" ::: "memory") +#define cpu_relax()	asm volatile("" ::: "memory") +#define CPUINFO_PROC	"CPU" +#endif +  #include <time.h>  #include <unistd.h>  #include <sys/types.h> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index bc4ad797743..c8be0fbc514 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -314,7 +314,6 @@ static int perf_evlist__id_add_fd(struct perf_evlist *evlist,  struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)  {  	struct hlist_head *head; -	struct hlist_node *pos;  	struct perf_sample_id *sid;  	int hash; @@ -324,7 +323,7 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)  	hash = hash_64(id, PERF_EVLIST__HLIST_BITS);  	head = &evlist->heads[hash]; -	hlist_for_each_entry(sid, pos, head, node) +	hlist_for_each_entry(sid, head, node)  		if (sid->id == id)  			return sid->evsel; diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 38624686ee9..226a4ae2f93 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -208,8 +208,9 @@ static inline int script_browse(const char *script_opt __maybe_unused)  	return 0;  } -#define K_LEFT -1 -#define K_RIGHT -2 +#define K_LEFT  -1000 +#define K_RIGHT -2000 +#define K_SWITCH_INPUT_DATA -3000  #endif  #ifdef GTK2_SUPPORT diff --git a/tools/perf/util/strlist.c b/tools/perf/util/strlist.c index 55433aa42c8..eabdce0a2da 100644 --- a/tools/perf/util/strlist.c +++ b/tools/perf/util/strlist.c @@ -143,7 +143,7 @@ struct strlist *strlist__new(bool dupstr, const char *list)  		slist->rblist.node_delete = strlist__node_delete;  		slist->dupstr	 = dupstr; -		if (slist && strlist__parse_list(slist, list) != 0) +		if (list && strlist__parse_list(slist, list) != 0)  			goto out_error;  	}  |