kprobes: Add symbols for kprobe insn pages
[linux-2.6-microblaze.git] / include / linux / kprobes.h
index 594265b..13fc58a 100644 (file)
@@ -242,6 +242,7 @@ struct kprobe_insn_cache {
        struct mutex mutex;
        void *(*alloc)(void);   /* allocate insn page */
        void (*free)(void *);   /* free insn page */
+       const char *sym;        /* symbol for insn pages */
        struct list_head pages; /* list of kprobe_insn_page */
        size_t insn_size;       /* size of instruction slot */
        int nr_garbage;
@@ -272,6 +273,10 @@ static inline bool is_kprobe_##__name##_slot(unsigned long addr)   \
 {                                                                      \
        return __is_insn_slot_addr(&kprobe_##__name##_slots, addr);     \
 }
+#define KPROBE_INSN_PAGE_SYM           "kprobe_insn_page"
+#define KPROBE_OPTINSN_PAGE_SYM                "kprobe_optinsn_page"
+int kprobe_cache_get_kallsym(struct kprobe_insn_cache *c, unsigned int *symnum,
+                            unsigned long *value, char *type, char *sym);
 #else /* __ARCH_WANT_KPROBES_INSN_SLOT */
 #define DEFINE_INSN_CACHE_OPS(__name)                                  \
 static inline bool is_kprobe_##__name##_slot(unsigned long addr)       \
@@ -373,6 +378,11 @@ void dump_kprobe(struct kprobe *kp);
 void *alloc_insn_page(void);
 void free_insn_page(void *page);
 
+int kprobe_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
+                      char *sym);
+
+int arch_kprobe_get_kallsym(unsigned int *symnum, unsigned long *value,
+                           char *type, char *sym);
 #else /* !CONFIG_KPROBES: */
 
 static inline int kprobes_built_in(void)
@@ -435,6 +445,11 @@ static inline bool within_kprobe_blacklist(unsigned long addr)
 {
        return true;
 }
+static inline int kprobe_get_kallsym(unsigned int symnum, unsigned long *value,
+                                    char *type, char *sym)
+{
+       return -ERANGE;
+}
 #endif /* CONFIG_KPROBES */
 static inline int disable_kretprobe(struct kretprobe *rp)
 {