/* Gets current function return address */
extern unsigned long get_ret_addr(struct task_struct *task, struct us_ip *ip);
+/* Gets current function entry stack pointer */
+extern unsigned long get_entry_sp(struct task_struct *task, struct us_ip *ip);
+
+ extern unsigned long imi_sum_time;
+ extern unsigned long imi_sum_hit;
+
+ extern struct list_head proc_probes_list;
+
+ int register_usprobe(struct task_struct *task, struct us_ip *ip, int atomic);
+ int unregister_usprobe(struct task_struct *task, struct us_ip *ip, int atomic, int no_rp2);
+
#define user_backtrace(size) \
do { \
us_proc_ip_t *ip = __get_cpu_var(gpCurIp); \
#include <linux/module.h>
#include <ksyms.h>
-
+extern unsigned long sched_addr;
+extern unsigned long fork_addr;
+extern unsigned long exit_addr;
+
+extern struct hlist_head kprobe_insn_pages;
+extern struct hlist_head uprobe_insn_pages;
-
void arch_remove_kprobe (struct kprobe *p, struct task_struct *task)
{
// TODO: check boostable for x86 and MIPS
#include <linux/mm.h>
#include <linux/pagemap.h>
-
-
+extern unsigned long sched_addr;
+extern unsigned long fork_addr;
+extern unsigned long exit_addr;
+extern struct hlist_head kprobe_insn_pages;
DEFINE_PER_CPU (struct kprobe *, current_kprobe) = NULL;
- DEFINE_PER_CPU (struct kprobe_ctlblk, kprobe_ctlblk);
+ static DEFINE_PER_CPU (struct kprobe_ctlblk, kprobe_ctlblk);
DEFINE_SPINLOCK (kretprobe_lock); /* Protects kretprobe_inst_table */
- DEFINE_PER_CPU (struct kprobe *, kprobe_instance) = NULL;
+ static DEFINE_PER_CPU (struct kprobe *, kprobe_instance) = NULL;
struct hlist_head kprobe_table[KPROBE_TABLE_SIZE];
- struct hlist_head kretprobe_inst_table[KPROBE_TABLE_SIZE];
+ static struct hlist_head kretprobe_inst_table[KPROBE_TABLE_SIZE];
atomic_t kprobe_count;
unsigned long sched_addr;
unsigned long fork_addr;
+unsigned long exit_addr;
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 29)
- struct mm_struct* init_mm_ptr;
+ static struct mm_struct* init_mm_ptr;
struct mm_struct init_mm;
#endif