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

Commit 94816add authored by Andi Kleen's avatar Andi Kleen Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Add perf_exe() helper to find perf binary



Also convert one existing user.

Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20190224153722.27020-9-andi@firstfloor.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4b6ac811
Loading
Loading
Loading
Loading
+3 −9
Original line number Original line Diff line number Diff line
@@ -527,17 +527,11 @@ static int write_event_desc(struct feat_fd *ff,
static int write_cmdline(struct feat_fd *ff,
static int write_cmdline(struct feat_fd *ff,
			 struct perf_evlist *evlist __maybe_unused)
			 struct perf_evlist *evlist __maybe_unused)
{
{
	char buf[MAXPATHLEN];
	char pbuf[MAXPATHLEN], *buf;
	u32 n;
	int i, ret, n;
	int i, ret;


	/* actual path to perf binary */
	/* actual path to perf binary */
	ret = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
	buf = perf_exe(pbuf, MAXPATHLEN);
	if (ret <= 0)
		return -1;

	/* readlink() does not add null termination */
	buf[ret] = '\0';


	/* account for binary path */
	/* account for binary path */
	n = perf_env.nr_cmdline + 1;
	n = perf_env.nr_cmdline + 1;
+10 −0
Original line number Original line Diff line number Diff line
@@ -568,3 +568,13 @@ const char *perf_tip(const char *dirpath)


	return tip;
	return tip;
}
}

char *perf_exe(char *buf, int len)
{
	int n = readlink("/proc/self/exe", buf, len);
	if (n > 0) {
		buf[n] = 0;
		return buf;
	}
	return strcpy(buf, "perf");
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -77,6 +77,8 @@ extern bool perf_singlethreaded;
void perf_set_singlethreaded(void);
void perf_set_singlethreaded(void);
void perf_set_multithreaded(void);
void perf_set_multithreaded(void);


char *perf_exe(char *buf, int len);

#ifndef O_CLOEXEC
#ifndef O_CLOEXEC
#ifdef __sparc__
#ifdef __sparc__
#define O_CLOEXEC      0x400000
#define O_CLOEXEC      0x400000