![Arnaldo Carvalho de Melo](/assets/img/avatar_default.png)
To make it consistent with the other dso lifetime routines. For instance: struct dso *vdso__new(struct machine *machine, const char *short_name, const char *long_name) Becomes: struct dso *machine__addnew_vdso(struct machine *machine, const char *short_name, const char *long_name) Because: 1) There is no 'struct vdso' for us to have vdso__ prefixed routines. 2) Because it will not really just create a new instance of 'struct dso', it'll call dso__new() but it will also insert it into the DSO's list/rbtree, and we have a method name for that: 'addnew', just like we have dsos__addnew(). 3) So it is really a 'struct machine' operation, it is the first argument, etc. This way the place where this is used gets consistent: if (vdso) { pgoff = 0; - dso = vdso__dso_findnew(machine, thread); + dso = machine__findnew_vdso(machine, thread); } else dso = machine__findnew_dso(machine, filename); Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/n/tip-r3w3tvh8exm9xfz3p4tz9qbz@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
30 lines
600 B
C
30 lines
600 B
C
#ifndef __PERF_VDSO__
|
|
#define __PERF_VDSO__
|
|
|
|
#include <linux/types.h>
|
|
#include <string.h>
|
|
#include <stdbool.h>
|
|
|
|
#define VDSO__MAP_NAME "[vdso]"
|
|
|
|
#define DSO__NAME_VDSO "[vdso]"
|
|
#define DSO__NAME_VDSO32 "[vdso32]"
|
|
#define DSO__NAME_VDSOX32 "[vdsox32]"
|
|
|
|
static inline bool is_vdso_map(const char *filename)
|
|
{
|
|
return !strcmp(filename, VDSO__MAP_NAME);
|
|
}
|
|
|
|
struct dso;
|
|
|
|
bool dso__is_vdso(struct dso *dso);
|
|
|
|
struct machine;
|
|
struct thread;
|
|
|
|
struct dso *machine__findnew_vdso(struct machine *machine, struct thread *thread);
|
|
void machine__exit_vdso(struct machine *machine);
|
|
|
|
#endif /* __PERF_VDSO__ */
|