Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f6544ed authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'perf-urgent-for-linus' of...

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  perf tools: Add group event scheduling option to perf record/stat
  MAINTAINERS: Fix list of perf events source files
  perf tools: Fix build against newer glibc
  perf tools: Fix error handling of unknown events
  perf evlist: Fix missing event name init for default event
  perf list: Fix exit value
parents 4762e252 fe4c51b2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4971,7 +4971,7 @@ M: Paul Mackerras <paulus@samba.org>
M:	Ingo Molnar <mingo@elte.hu>
M:	Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
S:	Supported
F:	kernel/perf_event*.c
F:	kernel/events/*
F:	include/linux/perf_event.h
F:	arch/*/kernel/perf_event*.c
F:	arch/*/kernel/*/perf_event*.c
+3 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ static int freq = 1000;
static int			output;
static int			pipe_output			=      0;
static const char		*output_name			= NULL;
static int			group				=      0;
static bool			group				=  false;
static int			realtime_prio			=      0;
static bool			nodelay				=  false;
static bool			raw_samples			=  false;
@@ -753,6 +753,8 @@ const struct option record_options[] = {
		    "child tasks do not inherit counters"),
	OPT_UINTEGER('F', "freq", &user_freq, "profile at this frequency"),
	OPT_UINTEGER('m', "mmap-pages", &mmap_pages, "number of mmap data pages"),
	OPT_BOOLEAN(0, "group", &group,
		    "put the counters into a counter group"),
	OPT_BOOLEAN('g', "call-graph", &call_graph,
		    "do call-graph (stack chain/backtrace) recording"),
	OPT_INCR('v', "verbose", &verbose,
+5 −2
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ static int big_num_opt = -1;
static const char		*cpu_list;
static const char		*csv_sep			= NULL;
static bool			csv_output			= false;
static bool			group				= false;

static volatile int done = 0;

@@ -280,14 +281,14 @@ static int create_perf_stat_counter(struct perf_evsel *evsel)
	attr->inherit = !no_inherit;

	if (system_wide)
		return perf_evsel__open_per_cpu(evsel, evsel_list->cpus, false);
		return perf_evsel__open_per_cpu(evsel, evsel_list->cpus, group);

	if (target_pid == -1 && target_tid == -1) {
		attr->disabled = 1;
		attr->enable_on_exec = 1;
	}

	return perf_evsel__open_per_thread(evsel, evsel_list->threads, false);
	return perf_evsel__open_per_thread(evsel, evsel_list->threads, group);
}

/*
@@ -1043,6 +1044,8 @@ static const struct option options[] = {
		    "stat events on existing thread id"),
	OPT_BOOLEAN('a', "all-cpus", &system_wide,
		    "system-wide collection from all CPUs"),
	OPT_BOOLEAN('g', "group", &group,
		    "put the counters into a counter group"),
	OPT_BOOLEAN('c', "scale", &scale,
		    "scale/normalize counters"),
	OPT_INCR('v', "verbose", &verbose,
+10 −1
Original line number Diff line number Diff line
@@ -85,10 +85,19 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
	struct perf_evsel *evsel = perf_evsel__new(&attr, 0);

	if (evsel == NULL)
		return -ENOMEM;
		goto error;

	/* use strdup() because free(evsel) assumes name is allocated */
	evsel->name = strdup("cycles");
	if (!evsel->name)
		goto error_free;

	perf_evlist__add(evlist, evsel);
	return 0;
error_free:
	perf_evsel__delete(evsel);
error:
	return -ENOMEM;
}

void perf_evlist__disable(struct perf_evlist *evlist)
+2 −0
Original line number Diff line number Diff line
@@ -5,7 +5,9 @@
#define __always_inline	inline
#endif
#define __user
#ifndef __attribute_const__
#define __attribute_const__
#endif

#define __used		__attribute__((__unused__))

Loading