forked from Minki/linux
208b4b4a59
Add infrastructure for module path discovery and section load addresses. Signed-off-by: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> LKML-Reference: <1246514830.13293.44.camel@marge.simson.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
#ifndef _PERF_MODULE_
|
|
#define _PERF_MODULE_ 1
|
|
|
|
#include <linux/types.h>
|
|
#include "../types.h"
|
|
#include <linux/list.h>
|
|
#include <linux/rbtree.h>
|
|
|
|
struct section {
|
|
struct rb_node rb_node;
|
|
u64 hash;
|
|
u64 vma;
|
|
char *name;
|
|
char *path;
|
|
};
|
|
|
|
struct sec_dso {
|
|
struct list_head node;
|
|
struct rb_root secs;
|
|
struct section *(*find_section)(struct sec_dso *, const char *name);
|
|
char name[0];
|
|
};
|
|
|
|
struct module {
|
|
struct rb_node rb_node;
|
|
u64 hash;
|
|
char *name;
|
|
char *path;
|
|
struct sec_dso *sections;
|
|
int active;
|
|
};
|
|
|
|
struct mod_dso {
|
|
struct list_head node;
|
|
struct rb_root mods;
|
|
struct module *(*find_module)(struct mod_dso *, const char *name);
|
|
char name[0];
|
|
};
|
|
|
|
struct sec_dso *sec_dso__new_dso(const char *name);
|
|
void sec_dso__delete_sections(struct sec_dso *self);
|
|
void sec_dso__delete_self(struct sec_dso *self);
|
|
size_t sec_dso__fprintf(struct sec_dso *self, FILE *fp);
|
|
struct section *sec_dso__find_section(struct sec_dso *self, const char *name);
|
|
|
|
struct mod_dso *mod_dso__new_dso(const char *name);
|
|
void mod_dso__delete_modules(struct mod_dso *self);
|
|
void mod_dso__delete_self(struct mod_dso *self);
|
|
size_t mod_dso__fprintf(struct mod_dso *self, FILE *fp);
|
|
struct module *mod_dso__find_module(struct mod_dso *self, const char *name);
|
|
int mod_dso__load_modules(struct mod_dso *dso);
|
|
|
|
#endif /* _PERF_MODULE_ */
|