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_*" */
29 #define regs_return_value(regs) ((regs)->ARM_r0)
30 #endif /* def EC_ARCH_arm */
34 //#include <linux/kprobes.h>
35 #define regs_return_value(regs) ((regs)->ax)
36 #endif /* def EC_ARCH_i386 */
40 #define regs_return_value(regs) ((regs)->regs[2])
41 #endif /* def EC_ARCH_mips */
43 #endif /* ndef regs_return_value */
45 extern struct jprobe my_jprobe[];
46 extern const char *ec_probe_name[];
48 extern struct kretprobe my_kretprobe[];
50 #define MY_JPROBE_ENTRY(handler_entry) { .entry = JPROBE_ENTRY(handler_entry) }
52 /* Probe up to 20 instances concurrently. */
55 #define MY_RETPROBE_HANDLER(handler_entry) { .handler = (handler_entry), .maxactive = MAXACTIVE }
57 #define MY_UAPP(_ips_arr) { .path="", .m_f_dentry=NULL, \
58 .ips_count=sizeof(_ips_arr)/sizeof(us_proc_ip_t), .p_ips=_ips_arr, \
59 .vtps_count=0, .p_vtps=NULL, .loaded=0}
60 #define MY_ULIB(_lib, _ips_arr) { .path=#_lib, .m_f_dentry=NULL, \
61 .ips_count=sizeof(_ips_arr)/sizeof(us_proc_ip_t), .p_ips=_ips_arr, \
62 .vtps_count=0, .p_vtps=NULL, .loaded=0}
63 #define MY_UPROBE_ENTRY(_name, _entry_hand, _exit_hand) {.name = #_name, \
64 .jprobe.entry = JPROBE_ENTRY(_entry_hand), \
65 .retprobe.handler = (kretprobe_handler_t)_exit_hand}
66 #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}
68 #endif // __PROBES_H__