[FEATURE] otg US probe for new_probe 78/40978/2
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 10 Jun 2015 11:42:41 +0000 (14:42 +0300)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Thu, 11 Jun 2015 15:04:12 +0000 (08:04 -0700)
Change-Id: I6d0464cf804949fee2087f54376acb548aaccae4
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
us_manager/probes/probe_info_new.c
us_manager/probes/probe_info_new.h

index 6754804..08b9bdf 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/module.h>
 #include <us_manager/sspt/ip.h>
 #include <us_manager/pf/pf_group.h>
+#include <us_manager/sspt/sspt_proc.h>
 #include "probes.h"
 #include "probe_info_new.h"
 #include "register_probes.h"
@@ -80,6 +81,23 @@ static int uprobe_handler(struct kprobe *p, struct pt_regs *regs)
 
 
 
+void pin_set_probe(struct probe_info_otg *otg, unsigned long vaddr)
+{
+       struct sspt_proc *proc;
+       struct task_struct *task = current;
+
+       otg->info.probe_type = otg->data->type;
+       otg->info.size = sizeof(struct probe_info_new *);
+
+       proc = sspt_proc_get_by_task(task);
+       if (proc) {
+               sspt_proc_install_probe(proc, vaddr, &otg->info);
+       } else {
+               pr_err("task[%u %u %s] not in sspt\n",
+                      task->tgid, task->pid, task->comm);
+       }
+}
+EXPORT_SYMBOL_GPL(pin_set_probe);
 
 /*
  * register/unregister interface
index 0d71348..bfc1fec 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <kprobe/swap_kprobes.h>
 #include <uprobe/swap_uprobes.h>
+#include "probes.h"
 
 
 struct dentry;
@@ -74,6 +75,12 @@ struct probe_new {
                .data_size = _size                      \
        }
 
+struct probe_info_otg {
+       struct probe_info info;
+       struct probe_info_new *data;    /* field 'data[0]' in probe_info struct */
+};
+
+void pin_set_probe(struct probe_info_otg *otg, unsigned long vaddr);
 
 int pin_register(struct probe_new *probe, struct pf_group *pfg,
                 struct dentry *dentry);