Merge commit 'cc09f10e84d5' into kernel
[kernel/swap-modules.git] / driver / ks_def_handler.c
1 #include <linux/module.h>
2 #include <asm/percpu.h>
3 #include <ks_manager.h>
4 #include <ec_probe.h>
5 #include <picl.h>
6 #include <storage.h>
7
8 DEFINE_PER_CPU(struct kern_probe *, gpKernProbe) = NULL;
9 EXPORT_PER_CPU_SYMBOL_GPL(gpKernProbe);
10
11 unsigned long def_jprobe_event_pre_handler(struct kern_probe *p,
12                                            struct pt_regs *regs)
13 {
14         __get_cpu_var(gpKernProbe) = p;
15
16         return 0;
17 }
18 EXPORT_SYMBOL_GPL(def_jprobe_event_pre_handler);
19
20 void def_jprobe_event_handler(unsigned long arg0, unsigned long arg1,
21                               unsigned long arg2, unsigned long arg3,
22                               unsigned long arg4, unsigned long arg5)
23 {
24         struct kern_probe *p = __get_cpu_var(gpKernProbe);
25
26         pack_event_info(KS_PROBE_ID, RECORD_ENTRY, "pxxxxxx", p->jp.kp.addr,
27                         arg0, arg1, arg2, arg3, arg4, arg5);
28         dbi_jprobe_return();
29 }
30 EXPORT_SYMBOL_GPL(def_jprobe_event_handler);
31
32 int def_retprobe_event_handler(struct kretprobe_instance *ri,
33                                struct pt_regs *regs, struct kern_probe *p)
34 {
35         int ret_val;
36
37         ret_val = regs_return_value(regs);
38         pack_event_info(KS_PROBE_ID, RECORD_RET, "pd", p->rp.kp.addr, ret_val);
39
40         return 0;
41 }
42 EXPORT_SYMBOL_GPL(def_retprobe_event_handler);