[IMPROVE] Us_manager: add page_fault callback for dlog 44/20144/2
authorAlexander Aksenov <a.aksenov@samsung.com>
Fri, 25 Apr 2014 11:56:05 +0000 (15:56 +0400)
committerAlexander Aksenov <a.aksenov@samsung.com>
Tue, 29 Apr 2014 08:21:14 +0000 (12:21 +0400)
Change-Id: I34901326eb65f51f57786bb743b71a9bff861217
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
us_manager/callbacks.h [new file with mode: 0644]
us_manager/helper.c

diff --git a/us_manager/callbacks.h b/us_manager/callbacks.h
new file mode 100644 (file)
index 0000000..99c102c
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef __CALLBACKS_H__
+#define __CALLBACKS_H__
+
+void register_pf_cb(int (*cb)(void));
+
+#endif /* __CALLBACKS_H__ */
index 4de32a5..7a5985b 100644 (file)
 #include "us_slot_manager.h"
 #include "sspt/sspt.h"
 #include "helper.h"
+#include "callbacks.h"
 
 struct task_struct;
 
 struct task_struct *check_task(struct task_struct *task);
 
+/* Callback for ret_handler_mf */
+static int (*pf_cb)(void) = NULL;
+
 /*
  ******************************************************************************
  *                               do_page_fault()                              *
@@ -66,6 +70,10 @@ static int ret_handler_mf(struct kretprobe_instance *ri, struct pt_regs *regs)
 
        /* TODO: check return value */
        page_addr = ((struct pf_data *)ri->data)->addr & PAGE_MASK;
+
+       if (pf_cb)
+               pf_cb();
+
        call_page_fault(task, page_addr);
 
        return 0;
@@ -386,3 +394,8 @@ int init_helper(void)
 void uninit_helper(void)
 {
 }
+
+void register_pf_cb(int (*cb)(void))
+{
+       pf_cb = cb;
+}