[REFACTOR] move and rename install_file_probes()
[kernel/swap-modules.git] / driver / probes.h
1 ////////////////////////////////////////////////////////////////////////////////////
2 //
3 //      FILE:           probes.h
4 //
5 //      DESCRIPTION:
6 //
7 //      SEE ALSO:       probes.c
8 //      AUTHOR:         L.Komkov, S.Grekhov, A.Gerenkov
9 //      COMPANY NAME:   Samsung Research Center in Moscow
10 //      DEPT NAME:      Advanced Software Group
11 //      CREATED:        2008.02.15
12 //      VERSION:        1.0
13 //      REVISION DATE:  2008.12.03
14 //
15 ////////////////////////////////////////////////////////////////////////////////////
16
17 #ifndef __PROBES_H__
18 #define __PROBES_H__
19
20 #include "ec_probe.h"
21 #include "storage.h"
22 #include "../kprobe/dbi_kprobes.h"
23
24 #ifndef regs_return_value
25 /* "regs_return_value" is ARCH-dependent. ARCH is passed via "EC_ARCH_*" */
26
27 #if defined(EC_ARCH_arm)    /* ARCH == arm */
28 #define regs_return_value(regs) ((regs)->ARM_r0)
29 #elif defined(EC_ARCH_x86) /* ARCH == x86 */
30 #define regs_return_value(regs) ((regs)->ax)
31 #elif defined(EC_ARCH_mips) /* ARCH == mips */
32 #define regs_return_value(regs) ((regs)->regs[2])
33 #else
34 #error "Cannot define -DEC_ARCH_$(ARCH) or architecture no supported"
35 #endif
36
37 #endif /* ndef regs_return_value */
38
39 extern struct jprobe my_jprobe[];
40 extern const char *ec_probe_name[];
41
42 extern struct kretprobe my_kretprobe[];
43
44 #define MY_JPROBE_ENTRY(handler_entry) { .entry = JPROBE_ENTRY(handler_entry) }
45
46 /* Probe up to 20 instances concurrently. */
47 #define MAXACTIVE 20
48
49 #define MY_RETPROBE_HANDLER(handler_entry) { .handler = (handler_entry), .maxactive = MAXACTIVE }
50
51 #define MY_UAPP(_ips_arr) { .path="", .m_f_dentry=NULL, \
52         .ips_count=sizeof(_ips_arr)/sizeof(us_proc_ip_t), .p_ips=_ips_arr, \
53         .vtps_count=0, .p_vtps=NULL, .loaded=0}
54 #define MY_ULIB(_lib, _ips_arr) { .path=#_lib, .m_f_dentry=NULL, \
55         .ips_count=sizeof(_ips_arr)/sizeof(us_proc_ip_t), .p_ips=_ips_arr, \
56         .vtps_count=0, .p_vtps=NULL, .loaded=0}
57 #define MY_UPROBE_ENTRY(_name, _entry_hand, _exit_hand) {.name = #_name, \
58         .jprobe.entry = JPROBE_ENTRY(_entry_hand), \
59         .retprobe.handler = (uretprobe_handler_t)_exit_hand}
60 #define MY_UPROBE_ENTRY_EXT(_name, _pre_entry_hand, _entry_hand, _exit_hand) {.name = #_name, .jprobe.pre_entry = (kprobe_pre_entry_handler_t)_pre_entry_hand, .jprobe.entry = JPROBE_ENTRY(_entry_hand), .retprobe.handler = (kretprobe_handler_t)_exit_hand}
61
62 #endif // __PROBES_H__