perf tools: Add kmod_path__parse function
tip-bot for Jiri Olsa
merge botCommit-ID: 3c8a67f50a1e68b912d1d74db6b455cac54ec4b4 Gitweb: http://git.kernel.org/tip/3c8a67f50a1e68b912d1d74db6b455cac54ec4b4 Author: Jiri Olsa <[email protected]> AuthorDate: Thu, 5 Feb 2015 15:40:25 +0100 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Sat, 21 Mar 2015 14:53:41 -0300
perf tools: Add kmod_path__parse function
Provides united way of parsing kernel module path into several components.
The new kmod_path__parse function and few defines:
int __kmod_path__parse(struct kmod_path *m, const char *path,
bool alloc_name, bool alloc_ext);
#define kmod_path__parse(__m, __p) __kmod_path__parse(__m, __p, false, false) #define kmod_path__parse_name(__m, __p) __kmod_path__parse(__m, __p, true , false) #define kmod_path__parse_ext(__m, __p) __kmod_path__parse(__m, __p, false, true)
parse kernel module @path and updates @m argument like:
@comp - true if @path contains supported compression suffix,
false otherwise
@kmod - true if @path contains '.ko' suffix in right position,
false otherwise
@name - if (@alloc_name && @kmod) is true, it contains strdup-ed base name
of the kernel module without suffixes, otherwise strudup-ed base name of @path
@ext - if (@alloc_ext && @comp) is true, it contains strdup-ed string
the compression suffix
It returns 0 if there's no strdup error, -ENOMEM otherwise.
--- tools/perf/tests/Build | 1 + tools/perf/tests/builtin-test.c | 4 +++ tools/perf/tests/kmod-path.c | 73 +++++++++++++++++++++++++++++++++++++++++ tools/perf/tests/tests.h | 1 + tools/perf/util/dso.c | 66 +++++++++++++++++++++++++++++++++++++ tools/perf/util/dso.h | 14 ++++++++ 6 files changed, 159 insertions(+)
tools/perf/tests/Build +1 -0
@@ -30,6 +30,7 @@ perf-y += keep-tracking.o perf-y += code-reading.o perf-y += sample-parsing.o perf-y += parse-no-sample-id-all.o +perf-y += kmod-path.o perf-$(CONFIG_X86) += perf-time-to-tsc.o
tools/perf/tests/builtin-test.c +4 -0
@@ -167,6 +167,10 @@ static struct test { .func = test__fdarray__add, }, { + .desc = "Test kmod_path__parse function", + .func = test__kmod_path__parse, + }, + { .func = NULL, }, };
tools/perf/tests/kmod-path.c new file +73 -0
73 lines not on this page · raw message
tools/perf/tests/tests.h +1 -0
@@ -51,6 +51,7 @@ int test__hists_cumulate(void);int test__switch_tracking (void );int test__fdarray__filter (void );int test__fdarray__add (void ); +int test__kmod_path__parse (void );#if defined(__x86_64__) || defined(__i386__) || defined(__arm__)#ifdef HAVE_DWARF_UNWIND_SUPPORT
tools/perf/util/dso.c +66 -0
72 lines not on this page · raw message
tools/perf/util/dso.h +14 -0
@@ -195,6 +195,20 @@ bool is_kernel_module(const char *pathname, bool *compressed);bool decompress_to_file (const char *ext,const char *filename,int output_fd);bool dso__needs_decompress (struct dso *dso); +struct kmod_path { +char *name; +char *ext; +bool comp; +bool kmod; +}; + +int __kmod_path__parse (struct kmod_path *m,const char *path, +bool alloc_name,bool alloc_ext); + +#define kmod_path__parse (__m, __p) __kmod_path__parse(__m, __p, false, false) +#define kmod_path__parse_name (__m, __p) __kmod_path__parse(__m, __p, true , false) +#define kmod_path__parse_ext (__m, __p) __kmod_path__parse(__m, __p, false, true) +/* * The dso__data_* external interface provides following functions: * dso__data_fd