1
0
Fork 0

perf tools: Make find_vdso_map() more modular

In preparation for checking that the vectors page on the ARM
architecture, refactor the find_vdso_map() function to accept finding an
arbitrary string and create a dedicated helper function for that under
util/find-map.c and update the filename to find-map.c and all references
to it: perf-read-vdso.c and util/vdso.c.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Kim Phillips <kim.phillips@arm.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Cc: Russell King <rmk+kernel@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Link: http://lkml.kernel.org/r/20181221034337.26663-2-f.fainelli@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
hifive-unleashed-5.1
Florian Fainelli 2018-12-20 19:43:36 -08:00 committed by Arnaldo Carvalho de Melo
parent ac6e022cbf
commit 011532379b
4 changed files with 11 additions and 12 deletions

View File

@ -662,12 +662,12 @@ $(OUTPUT)perf-%: %.o $(PERFLIBS)
$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS) $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS)
ifndef NO_PERF_READ_VDSO32 ifndef NO_PERF_READ_VDSO32
$(OUTPUT)perf-read-vdso32: perf-read-vdso.c util/find-vdso-map.c $(OUTPUT)perf-read-vdso32: perf-read-vdso.c util/find-map.c
$(QUIET_CC)$(CC) -m32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c $(QUIET_CC)$(CC) -m32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
endif endif
ifndef NO_PERF_READ_VDSOX32 ifndef NO_PERF_READ_VDSOX32
$(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c $(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-map.c
$(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c $(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
endif endif

View File

@ -5,17 +5,17 @@
#define VDSO__MAP_NAME "[vdso]" #define VDSO__MAP_NAME "[vdso]"
/* /*
* Include definition of find_vdso_map() also used in util/vdso.c for * Include definition of find_map() also used in util/vdso.c for
* building perf. * building perf.
*/ */
#include "util/find-vdso-map.c" #include "util/find-map.c"
int main(void) int main(void)
{ {
void *start, *end; void *start, *end;
size_t size, written; size_t size, written;
if (find_vdso_map(&start, &end)) if (find_map(&start, &end, VDSO__MAP_NAME))
return 1; return 1;
size = end - start; size = end - start;

View File

@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
static int find_vdso_map(void **start, void **end) static int find_map(void **start, void **end, const char *name)
{ {
FILE *maps; FILE *maps;
char line[128]; char line[128];
@ -7,7 +7,7 @@ static int find_vdso_map(void **start, void **end)
maps = fopen("/proc/self/maps", "r"); maps = fopen("/proc/self/maps", "r");
if (!maps) { if (!maps) {
fprintf(stderr, "vdso: cannot open maps\n"); fprintf(stderr, "cannot open maps\n");
return -1; return -1;
} }
@ -21,8 +21,7 @@ static int find_vdso_map(void **start, void **end)
if (m < 0) if (m < 0)
continue; continue;
if (!strncmp(&line[m], VDSO__MAP_NAME, if (!strncmp(&line[m], name, strlen(name)))
sizeof(VDSO__MAP_NAME) - 1))
found = 1; found = 1;
} }

View File

@ -18,10 +18,10 @@
#include "debug.h" #include "debug.h"
/* /*
* Include definition of find_vdso_map() also used in perf-read-vdso.c for * Include definition of find_map() also used in perf-read-vdso.c for
* building perf-read-vdso32 and perf-read-vdsox32. * building perf-read-vdso32 and perf-read-vdsox32.
*/ */
#include "find-vdso-map.c" #include "find-map.c"
#define VDSO__TEMP_FILE_NAME "/tmp/perf-vdso.so-XXXXXX" #define VDSO__TEMP_FILE_NAME "/tmp/perf-vdso.so-XXXXXX"
@ -76,7 +76,7 @@ static char *get_file(struct vdso_file *vdso_file)
if (vdso_file->found) if (vdso_file->found)
return vdso_file->temp_file_name; return vdso_file->temp_file_name;
if (vdso_file->error || find_vdso_map(&start, &end)) if (vdso_file->error || find_map(&start, &end, VDSO__MAP_NAME))
return NULL; return NULL;
size = end - start; size = end - start;