]> sourceware.org Git - systemtap.git/commitdiff
PR9940: avoid duplicated calling of uprobes in shared libraries
authorWenji Huang <wenji.huang@oracle.com>
Wed, 18 Mar 2009 15:17:25 +0000 (11:17 -0400)
committerWenji Huang <wenji.huang@oracle.com>
Thu, 19 Mar 2009 22:27:02 +0000 (18:27 -0400)
Add map_p argument to __stp_call_vm_callbacks_with_vma to well
tune the vma callback.

Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
runtime/task_finder.c

index 38f9145d68cf80f35bbeb2515d76cd0aa5e73a27..2b4087632aa12bf6137aef70932894ecfc42fa64 100644 (file)
@@ -1026,6 +1026,7 @@ __stp_utrace_task_finder_target_syscall_entry(enum utrace_resume_action action,
 static void
 __stp_call_vm_callbacks_with_vma(struct stap_task_finder_target *tgt,
                                 struct task_struct *tsk,
+                                int map_p,
                                 struct vm_area_struct *vma)
 {
        char *mmpath_buf;
@@ -1052,7 +1053,7 @@ __stp_call_vm_callbacks_with_vma(struct stap_task_finder_target *tgt,
                           rc, (int)tsk->pid);
        }
        else {
-               __stp_call_vm_callbacks(tgt, tsk, 1, mmpath,
+               __stp_call_vm_callbacks(tgt, tsk, map_p, mmpath,
                                        vma->vm_start, vma->vm_end,
                                        (vma->vm_pgoff << PAGE_SHIFT));
        }
@@ -1145,7 +1146,7 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
                        down_read(&mm->mmap_sem);
                        vma = __stp_find_file_based_vma(mm, rv);
                        if (vma != NULL) {
-                               __stp_call_vm_callbacks_with_vma(tgt, tsk, vma);
+                               __stp_call_vm_callbacks_with_vma(tgt, tsk, 0, vma);
                        }
                        up_read(&mm->mmap_sem);
                        mmput(mm);
@@ -1218,6 +1219,7 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
                                       && vma->vm_end <= entry->vm_end) {
                                        __stp_call_vm_callbacks_with_vma(tgt,
                                                                         tsk,
+                                                                        1,
                                                                         vma);
                                        if (vma->vm_end >= entry->vm_end)
                                                break;
This page took 0.030482 seconds and 5 git commands to generate.