This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] add dbug_task_vma debug macro


replace DEBUG_TASK_FINDER_VMA
with a dbug_unwind-like macro: dbug_task_vma
---
 runtime/debug.h          |   10 ++++++++++
 runtime/task_finder.c    |    8 ++------
 runtime/task_finder2.c   |    8 ++------
 runtime/uprobes-common.c |   20 +++++---------------
 runtime/vma.c            |   40 ++++++++++------------------------------
 5 files changed, 29 insertions(+), 57 deletions(-)

diff --git a/runtime/debug.h b/runtime/debug.h
index 5c9cca7..cce06d1 100644
--- a/runtime/debug.h
+++ b/runtime/debug.h
@@ -57,6 +57,16 @@
 #define dbug_unwind(level, args...) ;
 #endif
 
+#if defined(DEBUG_TASK_FINDER_VMA)
+#define dbug_task_vma(level, args...) do {                                     \
+               if ((level) <= DEBUG_TASK_FINDER_VMA)                               \
+                       _stp_dbug(__FUNCTION__, __LINE__, args);        \
+       } while (0)
+#else
+#define dbug_task_vma(level, args...) ;
+#endif
+
+
 #ifdef DEBUG_SYMBOLS
 #define dbug_sym(level, args...) do {					\
 		if ((level) <= DEBUG_SYMBOLS)				\
diff --git a/runtime/task_finder.c b/runtime/task_finder.c
index e436dec..5a00618 100644
--- a/runtime/task_finder.c
+++ b/runtime/task_finder.c
@@ -668,8 +668,7 @@ __stp_call_mmap_callbacks(struct stap_task_finder_target *tgt,
 	if (tgt == NULL || tsk == NULL)
 		return;
 
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "pid %d, a/l/o/p/path 0x%lx  0x%lx  0x%lx  %c%c%c%c  %s\n",
 		  tsk->pid, addr, length, offset,
 		  vm_flags & VM_READ ? 'r' : '-',
@@ -677,7 +676,6 @@ __stp_call_mmap_callbacks(struct stap_task_finder_target *tgt,
 		  vm_flags & VM_EXEC ? 'x' : '-',
 		  vm_flags & VM_MAYSHARE ? 's' : 'p',
 		  path);
-#endif
 	list_for_each(cb_node, &tgt->callback_list_head) {
 		struct stap_task_finder_target *cb_tgt;
 
@@ -1543,8 +1541,7 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
 	__stp_tf_handler_start();
 	rv = syscall_get_return_value(tsk, regs);
 
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "tsk %d found %s(0x%lx), returned 0x%lx\n",
 		  tsk->pid,
 		  ((entry->syscall_no == MMAP_SYSCALL_NO(tsk)) ? "mmap"
@@ -1555,7 +1552,6 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
 			    ? "munmap"
 			    : "UNKNOWN")))),
 		  entry->arg0, rv);
-#endif
 
 	if (entry->syscall_no == MUNMAP_SYSCALL_NO(tsk)) {
 		// Call the callbacks
diff --git a/runtime/task_finder2.c b/runtime/task_finder2.c
index 58486aa..a91a22b 100644
--- a/runtime/task_finder2.c
+++ b/runtime/task_finder2.c
@@ -624,8 +624,7 @@ __stp_call_mmap_callbacks(struct stap_task_finder_target *tgt,
 	if (tgt == NULL || tsk == NULL)
 		return;
 
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "pid %d, a/l/o/p/path 0x%lx  0x%lx  0x%lx  %c%c%c%c  %s\n",
 		  tsk->pid, addr, length, offset,
 		  vm_flags & VM_READ ? 'r' : '-',
@@ -633,7 +632,6 @@ __stp_call_mmap_callbacks(struct stap_task_finder_target *tgt,
 		  vm_flags & VM_EXEC ? 'x' : '-',
 		  vm_flags & VM_MAYSHARE ? 's' : 'p',
 		  path);
-#endif
 	list_for_each(cb_node, &tgt->callback_list_head) {
 		struct stap_task_finder_target *cb_tgt;
 
@@ -1458,8 +1456,7 @@ __stp_utrace_task_finder_target_syscall_exit(u32 action,
 	__stp_tf_handler_start();
 	rv = syscall_get_return_value(tsk, regs);
 
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "tsk %d found %s(0x%lx), returned 0x%lx\n",
 		  tsk->pid,
 		  ((entry->syscall_no == MMAP_SYSCALL_NO(tsk)) ? "mmap"
@@ -1470,7 +1467,6 @@ __stp_utrace_task_finder_target_syscall_exit(u32 action,
 			    ? "munmap"
 			    : "UNKNOWN")))),
 		  entry->arg0, rv);
-#endif
 
 	if (in_atomic() || irqs_disabled()) {
 		struct task_work *work;
diff --git a/runtime/uprobes-common.c b/runtime/uprobes-common.c
index f557f71..64b62cc 100644
--- a/runtime/uprobes-common.c
+++ b/runtime/uprobes-common.c
@@ -253,9 +253,7 @@ static int stap_uprobe_change_minus (struct task_struct *tsk, unsigned long relo
 static int stap_uprobe_process_found (struct stap_task_finder_target *tgt, struct task_struct *tsk, int register_p, int process_p) {
   const struct stap_uprobe_tf *stf = container_of(tgt, struct stap_uprobe_tf, finder);
   if (! process_p) return 0; /* ignore threads */
-  #ifdef DEBUG_TASK_FINDER_VMA
-  _stp_dbug (__FUNCTION__,__LINE__, "%cproc pid %d stf %p %p path %s\n", register_p?'+':'-', tsk->tgid, tgt, stf, stf->pathname);
-  #endif
+  dbug_task_vma(1, "%cproc pid %d stf %p %p path %s\n", register_p?'+':'-', tsk->tgid, tgt, stf, stf->pathname);
   /* ET_EXEC events are like shlib events, but with 0 relocation bases */
   if (register_p) {
     int rc = stap_uprobe_change_plus (tsk, 0, TASK_SIZE, stf, 0, 0);
@@ -288,12 +286,10 @@ stap_uprobe_mmap_found (struct stap_task_finder_target *tgt,
 
   /* Check non-writable, executable sections for probes. */
   if ((vm_flags & VM_EXEC) && !(vm_flags & VM_WRITE)) {
-    #ifdef DEBUG_TASK_FINDER_VMA
-    _stp_dbug (__FUNCTION__,__LINE__,
+    dbug_task_vma (1,
                "+mmap X pid %d path %s addr %p length %u offset %p stf %p %p path %s\n",
                tsk->tgid, path, (void *) addr, (unsigned)length, (void*) offset,
                tgt, stf, stf->pathname);
-    #endif
     rc = stap_uprobe_change_plus (tsk, addr, length, stf, offset, vm_flags);
   }
 
@@ -303,12 +299,10 @@ stap_uprobe_mmap_found (struct stap_task_finder_target *tgt,
    *     no error (rc == 0), we need to look for semaphores too.
    */
   if ((rc == 0) && (vm_flags & VM_WRITE)) {
-    #ifdef DEBUG_TASK_FINDER_VMA
-    _stp_dbug (__FUNCTION__,__LINE__,
+    dbug_task_vma (1,
                "+mmap W pid %d path %s addr %p length %u offset %p stf %p %p path %s\n",
                tsk->tgid, path, (void *) addr, (unsigned)length, (void*) offset,
                tgt, stf, stf->pathname);
-    #endif
     rc = stap_uprobe_change_semaphore_plus (tsk, addr, length, stf);
   }
 
@@ -318,9 +312,7 @@ stap_uprobe_mmap_found (struct stap_task_finder_target *tgt,
 /* The task_finder_munmap_callback */
 static int stap_uprobe_munmap_found (struct stap_task_finder_target *tgt, struct task_struct *tsk, unsigned long addr, unsigned long length) {
   const struct stap_uprobe_tf *stf = container_of(tgt, struct stap_uprobe_tf, finder);
-  #ifdef DEBUG_TASK_FINDER_VMA
-  _stp_dbug (__FUNCTION__,__LINE__, "-mmap pid %d addr %p length %lu stf %p %p path %s\n", tsk->tgid, (void *) addr, length, tgt, stf, stf->pathname);
-  #endif
+  dbug_task_vma (1, "-mmap pid %d addr %p length %lu stf %p %p path %s\n", tsk->tgid, (void *) addr, length, tgt, stf, stf->pathname);
   return stap_uprobe_change_minus (tsk, addr, length, stf);
 }
 
@@ -330,9 +322,7 @@ static int stap_uprobe_munmap_found (struct stap_task_finder_target *tgt, struct
 static int stap_uprobe_process_munmap (struct stap_task_finder_target *tgt, struct task_struct *tsk, int register_p, int process_p) {
   const struct stap_uprobe_tf *stf = container_of(tgt, struct stap_uprobe_tf, finder);
   if (! process_p) return 0; /* ignore threads */
-  #ifdef DEBUG_TASK_FINDER_VMA
-  _stp_dbug (__FUNCTION__,__LINE__, "%cproc pid %d stf %p %p path %s\n", register_p?'+':'-', tsk->tgid, tgt, stf, stf->pathname);
-  #endif
+  dbug_task_vma (1, "%cproc pid %d stf %p %p path %s\n", register_p?'+':'-', tsk->tgid, tgt, stf, stf->pathname);
   /* Covering 0->TASK_SIZE means "unmap everything" */
   if (!register_p)
     return stap_uprobe_change_minus (tsk, 0, TASK_SIZE, stf);
diff --git a/runtime/vma.c b/runtime/vma.c
index 8f758d0..b1091f2 100644
--- a/runtime/vma.c
+++ b/runtime/vma.c
@@ -34,9 +34,7 @@ static void _stp_vma_match_vdso(struct task_struct *tsk)
       unsigned long vdso_addr = tsk->mm->context.vdso_base;
 #endif
 
-#ifdef DEBUG_TASK_FINDER_VMA
-      _dbug("tsk: %d vdso: 0x%lx\n", tsk->pid, vdso_addr);
-#endif
+      dbug_task_vma(1,"tsk: %d vdso: 0x%lx\n", tsk->pid, vdso_addr);
 
       for (i = 0; i < _stp_num_modules && found == NULL; i++) {
 	struct _stp_module *m = _stp_modules[i];
@@ -47,10 +45,8 @@ static void _stp_vma_match_vdso(struct task_struct *tsk)
 	    unsigned long notes_addr;
 	    int all_ok = 1;
 	    notes_addr = vdso_addr + m->build_id_offset;
-#ifdef DEBUG_TASK_FINDER_VMA
-	    _dbug("notes_addr %s: 0x%lx + 0x%lx = 0x%lx (len: %x)\n", m->name,
+	    dbug_task_vma(1,"notes_addr %s: 0x%lx + 0x%lx = 0x%lx (len: %x)\n", m->name,
 		  vdso_addr, m->build_id_offset, notes_addr, m->build_id_len);
-#endif
 	    for (j = 0; j < m->build_id_len; j++)
 	      {
 		int rc;
@@ -80,10 +76,8 @@ static void _stp_vma_match_vdso(struct task_struct *tsk)
 #endif
 		if (rc || b != m->build_id_bits[j])
 		  {
-#ifdef DEBUG_TASK_FINDER_VMA
-		    _dbug("darn, not equal (rc=%d) at %d (0x%x != 0x%x)\n",
+		    dbug_task_vma(1,"darn, not equal (rc=%d) at %d (0x%x != 0x%x)\n",
 			  rc, j, b, m->build_id_bits[j]);
-#endif
 		    all_ok = 0;
 		    break;
 		  }
@@ -97,9 +91,7 @@ static void _stp_vma_match_vdso(struct task_struct *tsk)
 	  stap_add_vma_map_info(tsk, vdso_addr,
 				vdso_addr + found->sections[0].size,
 				"vdso", found);
-#ifdef DEBUG_TASK_FINDER_VMA
-	  _dbug("found vdso: %s\n", found->path);
-#endif
+	  dbug_task_vma(1,"found vdso: %s\n", found->path);
 	}
     }
 #endif /* STAPCONF_MM_CONTEXT_VDSO */
@@ -112,11 +104,9 @@ static int _stp_vma_exec_cb(struct stap_task_finder_target *tgt,
 			    int register_p,
 			    int process_p)
 {
-#ifdef DEBUG_TASK_FINDER_VMA
-  _stp_dbug(__FUNCTION__, __LINE__,
+  dbug_task_vma(1,
 	    "tsk %d:%d , register_p: %d, process_p: %d\n",
 	    tsk->pid, tsk->tgid, register_p, process_p);
-#endif
   if (process_p)
     {
       if (register_p)
@@ -144,11 +134,9 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
         if (path == NULL || *path == '\0') /* unknown? */
                 path = (char *)name; /* we'll copy this soon, in ..._add_vma_... */
 
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "mmap_cb: tsk %d:%d path %s, addr 0x%08lx, length 0x%08lx, offset 0x%lx, flags 0x%lx\n",
 		  tsk->pid, tsk->tgid, path, addr, length, offset, vm_flags);
-#endif
 	// We are only interested in the first load of the whole module that
 	// is executable. We register whether or not we know the module,
 	// so we can later lookup the name given an address for this task.
@@ -159,11 +147,9 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
 			{
 			  unsigned long vm_start = 0;
 			  unsigned long vm_end = 0;
-#ifdef DEBUG_TASK_FINDER_VMA
-			  _stp_dbug(__FUNCTION__, __LINE__,
+			  dbug_task_vma(1,
 				    "vm_cb: matched path %s to module (sec: %s)\n",
 				    path, _stp_modules[i]->sections[0].name);
-#endif
 			  module = _stp_modules[i];
 			  /* Make sure we really don't know about this module
 			     yet.  If we do know, we might want to extend
@@ -200,12 +186,10 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
 		  {
 		    res = stap_add_vma_map_info(tsk->group_leader, addr,
 						addr + length, path, NULL);
-#ifdef DEBUG_TASK_FINDER_VMA
-		    _stp_dbug(__FUNCTION__, __LINE__,
+		    dbug_task_vma(1,
 			      "registered '%s' for %d (res:%d) [%lx-%lx]\n",
 			      path, tsk->group_leader->pid,
 			      res, addr, addr + length);
-#endif
 		  }
 
 	} else if (path != NULL) {
@@ -216,12 +200,10 @@ static int _stp_vma_mmap_cb(struct stap_task_finder_target *tgt,
 		// precisely to module names and symbols.
 		res = stap_extend_vma_map_info(tsk->group_leader,
 					       addr, addr + length);
-#ifdef DEBUG_TASK_FINDER_VMA
-		_stp_dbug(__FUNCTION__, __LINE__,
+		dbug_task_vma(1,
 			  "extended '%s' for %d (res:%d) [%lx-%lx]\n",
 			  path, tsk->group_leader->pid,
 			  res, addr, addr + length);
-#endif
 	}
 	return 0;
 }
@@ -265,10 +247,8 @@ static int _stp_vma_init(void)
 		_stp_error("Couldn't initialize vma map: %d\n", rc);
 		return rc;
 	}
-#ifdef DEBUG_TASK_FINDER_VMA
-	_stp_dbug(__FUNCTION__, __LINE__,
+	dbug_task_vma(1,
 		  "registering vmcb (_stap_target: %d)\n", _stp_target);
-#endif
 	rc = stap_register_task_finder_target (& vmcb);
 	if (rc != 0)
 		_stp_error("Couldn't register task finder target: %d\n", rc);
-- 
1.7.5.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]