mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 21:21:09 -04:00
perf trace beauty: Export strarray for use in per-object beautifiers
Like will be done with fcntl(fd, F_GETLEASE, F_RDLCK|F_WRLCK|F_UNLCK) Cc: Adrian Hunter <[email protected]> Cc: David Ahern <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Wang Nan <[email protected]> Link: http://lkml.kernel.org/n/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
@@ -283,34 +283,21 @@ out_delete:
|
||||
({ struct syscall_tp *fields = evsel->priv; \
|
||||
fields->name.pointer(&fields->name, sample); })
|
||||
|
||||
struct strarray {
|
||||
int offset;
|
||||
int nr_entries;
|
||||
const char **entries;
|
||||
};
|
||||
size_t strarray__scnprintf(struct strarray *sa, char *bf, size_t size, const char *intfmt, int val)
|
||||
{
|
||||
int idx = val - sa->offset;
|
||||
|
||||
#define DEFINE_STRARRAY(array) struct strarray strarray__##array = { \
|
||||
.nr_entries = ARRAY_SIZE(array), \
|
||||
.entries = array, \
|
||||
}
|
||||
if (idx < 0 || idx >= sa->nr_entries)
|
||||
return scnprintf(bf, size, intfmt, val);
|
||||
|
||||
#define DEFINE_STRARRAY_OFFSET(array, off) struct strarray strarray__##array = { \
|
||||
.offset = off, \
|
||||
.nr_entries = ARRAY_SIZE(array), \
|
||||
.entries = array, \
|
||||
return scnprintf(bf, size, "%s", sa->entries[idx]);
|
||||
}
|
||||
|
||||
static size_t __syscall_arg__scnprintf_strarray(char *bf, size_t size,
|
||||
const char *intfmt,
|
||||
struct syscall_arg *arg)
|
||||
{
|
||||
struct strarray *sa = arg->parm;
|
||||
int idx = arg->val - sa->offset;
|
||||
|
||||
if (idx < 0 || idx >= sa->nr_entries)
|
||||
return scnprintf(bf, size, intfmt, arg->val);
|
||||
|
||||
return scnprintf(bf, size, "%s", sa->entries[idx]);
|
||||
return strarray__scnprintf(arg->parm, bf, size, intfmt, arg->val);
|
||||
}
|
||||
|
||||
static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size,
|
||||
|
||||
@@ -1,8 +1,28 @@
|
||||
#ifndef _PERF_TRACE_BEAUTY_H
|
||||
#define _PERF_TRACE_BEAUTY_H
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct strarray {
|
||||
int offset;
|
||||
int nr_entries;
|
||||
const char **entries;
|
||||
};
|
||||
|
||||
#define DEFINE_STRARRAY(array) struct strarray strarray__##array = { \
|
||||
.nr_entries = ARRAY_SIZE(array), \
|
||||
.entries = array, \
|
||||
}
|
||||
|
||||
#define DEFINE_STRARRAY_OFFSET(array, off) struct strarray strarray__##array = { \
|
||||
.offset = off, \
|
||||
.nr_entries = ARRAY_SIZE(array), \
|
||||
.entries = array, \
|
||||
}
|
||||
|
||||
size_t strarray__scnprintf(struct strarray *sa, char *bf, size_t size, const char *intfmt, int val);
|
||||
|
||||
struct trace;
|
||||
struct thread;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user