perf tools: Add compression id into 'struct kmod_path'
Store a decompression ID in 'struct kmod_path', so it can be later
stored in 'struct dso'.
Switch 'struct kmod_path's 'comp' from 'bool' to 'int' to return the
compressions array index. Add 0 index item into compressions array, so
that the comp usage stays as it was: 0 - no compression, != 0
compression index.
Update the kmod_path tests.
Committer notes:
Use a designated initializer + terminating comma, e.g. { .fmt = NULL, }, to fix
the build in several distros:
centos:6: util/dso.c:201: error: missing initializer
centos:6: util/dso.c:201: error: (near initialization for 'compressions[0].decompress')
debian:9: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
fedora:25: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
fedora:26: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
fedora:27: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
oraclelinux:6: util/dso.c:201: error: missing initializer
oraclelinux:6: util/dso.c:201: error: (near initialization for 'compressions[0].decompress')
ubuntu:12.04.5: util/dso.c:201:2: error: missing initializer [-Werror=missing-field-initializers]
ubuntu:12.04.5: util/dso.c:201:2: error: (near initialization for 'compressions[0].decompress') [-Werror=missing-field-initializers]
ubuntu:16.04: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
ubuntu:16.10: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
ubuntu:16.10: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
ubuntu:17.10: util/dso.c:201:24: error: missing field 'decompress' initializer [-Werror,-Wmissing-field-initializers]
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20180817094813.15086-7-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
e1e139463d
commit
4b838b0db4
@@ -189,10 +189,15 @@ int dso__read_binary_type_filename(const struct dso *dso,
|
||||
return ret;
|
||||
}
|
||||
|
||||
enum {
|
||||
COMP_ID__NONE = 0,
|
||||
};
|
||||
|
||||
static const struct {
|
||||
const char *fmt;
|
||||
int (*decompress)(const char *input, int output);
|
||||
} compressions[] = {
|
||||
[COMP_ID__NONE] = { .fmt = NULL, },
|
||||
#ifdef HAVE_ZLIB_SUPPORT
|
||||
{ "gz", gzip_decompress_to_file },
|
||||
#endif
|
||||
@@ -202,15 +207,15 @@ static const struct {
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
static bool is_supported_compression(const char *ext)
|
||||
static int is_supported_compression(const char *ext)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; compressions[i].fmt; i++) {
|
||||
for (i = 1; compressions[i].fmt; i++) {
|
||||
if (!strcmp(ext, compressions[i].fmt))
|
||||
return true;
|
||||
return i;
|
||||
}
|
||||
return false;
|
||||
return COMP_ID__NONE;
|
||||
}
|
||||
|
||||
bool is_kernel_module(const char *pathname, int cpumode)
|
||||
@@ -372,10 +377,9 @@ int __kmod_path__parse(struct kmod_path *m, const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (is_supported_compression(ext + 1)) {
|
||||
m->comp = true;
|
||||
m->comp = is_supported_compression(ext + 1);
|
||||
if (m->comp > COMP_ID__NONE)
|
||||
ext -= 3;
|
||||
}
|
||||
|
||||
/* Check .ko extension only if there's enough name left. */
|
||||
if (ext > name)
|
||||
|
||||
Reference in New Issue
Block a user