.vtps_count=0, .p_vtps=NULL, .loaded=0}
#define MY_UPROBE_ENTRY(_name, _entry_hand, _exit_hand) {.name = #_name, \
.jprobe.entry = JPROBE_ENTRY(_entry_hand), \
- .retprobe.handler = (kretprobe_handler_t)_exit_hand}
+ .retprobe.handler = (uretprobe_handler_t)_exit_hand}
#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}
#endif // __PROBES_H__
*/
#include <linux/list.h>
-#include "../../kprobe/dbi_kprobes.h"
+//#include "../../kprobe/dbi_kprobes.h"
+#include <swap_uprobes.h>
// TODO: tmp struct ip_data
struct ip_data {
kprobe_pre_entry_handler_t pre_handler;
unsigned long jp_handler;
- kretprobe_handler_t rp_handler;
+ uretprobe_handler_t rp_handler;
unsigned flag_retprobe:1;
};
struct list_head list;
struct jprobe jprobe;
- struct kretprobe retprobe;
+ struct uretprobe retprobe;
unsigned long offset;
unsigned long got_addr;
unsigned long ujprobe_event_pre_handler (struct us_ip *ip, struct pt_regs *regs);
void ujprobe_event_handler (unsigned long arg1, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5, unsigned long arg6);
-int uretprobe_event_handler (struct kretprobe_instance *probe, struct pt_regs *regs, struct us_ip *ip);
+int uretprobe_event_handler(struct uretprobe_instance *probe, struct pt_regs *regs, struct us_ip *ip);
int us_proc_probes;
int install_otg_ip(unsigned long addr,
kprobe_pre_entry_handler_t pre_handler,
unsigned long jp_handler,
- kretprobe_handler_t rp_handler)
+ uretprobe_handler_t rp_handler)
{
int ret = 0;
struct task_struct *task = current->group_leader;
}
}
-int uretprobe_event_handler(struct kretprobe_instance *probe, struct pt_regs *regs, struct us_ip *ip)
+int uretprobe_event_handler(struct uretprobe_instance *probe, struct pt_regs *regs, struct us_ip *ip)
{
int retval = regs_return_value(regs);
unsigned long addr = (unsigned long)ip->jprobe.kp.addr;
// Mr_Nobody: comment for valencia
ip->retprobe.kp.tgid = task->tgid;
if (ip->retprobe.handler == NULL) {
- ip->retprobe.handler = (kretprobe_handler_t)uretprobe_event_handler;
+ ip->retprobe.handler = (uretprobe_handler_t)uretprobe_event_handler;
DPRINTF("Set default ret event handler for %x\n", ip->offset);
}
}
EXPORT_SYMBOL_GPL(dump_backtrace);
-struct kretprobe_instance *find_ri(struct task_struct *task, struct us_ip *ip)
+struct uretprobe_instance *find_ri(struct task_struct *task, struct us_ip *ip)
{
struct hlist_node *item, *tmp_node;
- struct kretprobe_instance *ri;
+ struct uretprobe_instance *ri;
if (ip == NULL)
return NULL;
hlist_for_each_safe (item, tmp_node, &ip->retprobe.used_instances) {
- ri = hlist_entry (item, struct kretprobe_instance, uflist);
+ ri = hlist_entry(item, struct uretprobe_instance, uflist);
if (ri->task && ri->task->pid == task->pid &&
ri->task->tgid == task->tgid)
unsigned long get_ret_addr(struct task_struct *task, struct us_ip *ip)
{
- struct kretprobe_instance *ri = find_ri(task, ip);;
+ struct uretprobe_instance *ri = find_ri(task, ip);;
if (ri)
return (unsigned long)ri->ret_addr;
else
unsigned long get_entry_sp(struct task_struct *task, struct us_ip *ip)
{
- struct kretprobe_instance *ri = find_ri(task, ip);
+ struct uretprobe_instance *ri = find_ri(task, ip);
if (ri)
return (unsigned long)ri->sp;
else
extern int dump_backtrace(probe_id_t probe_id, struct task_struct *task,
void *addr, struct pt_regs *regs, unsigned long sz);
-/* Finds task's kretprobe_instance object */
-struct kretprobe_instance *find_ri(struct task_struct *task, struct us_ip *ip);
+/* Finds task's uretprobe_instance object */
+struct uretprobe_instance *find_ri(struct task_struct *task, struct us_ip *ip);
/* Gets current function return address */
extern unsigned long get_ret_addr(struct task_struct *task, struct us_ip *ip);
int install_otg_ip(unsigned long addr,
kprobe_pre_entry_handler_t pre_handler,
unsigned long jp_handler,
- kretprobe_handler_t rp_handler);
+ uretprobe_handler_t rp_handler);
#endif /* !defined(__US_PROC_INST_H__) */