1 ////////////////////////////////////////////////////////////////////////////////////
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
13 // REVISION DATE: 2008.12.03
15 ////////////////////////////////////////////////////////////////////////////////////
22 #include "../kprobe/dbi_kprobes.h"
24 #ifndef regs_return_value
25 /* "regs_return_value" is ARCH-dependent. ARCH is passed via "EC_ARCH_*" */
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])
34 #error "Cannot define -DEC_ARCH_$(ARCH) or architecture no supported"
37 #endif /* ndef regs_return_value */
39 extern struct jprobe my_jprobe[];
40 extern const char *ec_probe_name[];
42 extern struct kretprobe my_kretprobe[];
44 #define MY_JPROBE_ENTRY(handler_entry) { .entry = JPROBE_ENTRY(handler_entry) }
46 /* Probe up to 20 instances concurrently. */
49 #define MY_RETPROBE_HANDLER(handler_entry) { .handler = (handler_entry), .maxactive = MAXACTIVE }
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}
62 #endif // __PROBES_H__