Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/kern Enhance EXEC_DEBUG by also printing the UVM commands



details:   https://anonhg.NetBSD.org/src/rev/7e255ef2011a
branches:  trunk
changeset: 768809:7e255ef2011a
user:      reinoud <reinoud%NetBSD.org@localhost>
date:      Sat Aug 27 17:51:38 2011 +0000

description:
Enhance EXEC_DEBUG by also printing the UVM commands

diffstat:

 sys/kern/kern_exec.c |  37 ++++++++++++++++++++++++++++++++-----
 1 files changed, 32 insertions(+), 5 deletions(-)

diffs (80 lines):

diff -r ef4571590130 -r 7e255ef2011a sys/kern/kern_exec.c
--- a/sys/kern/kern_exec.c      Sat Aug 27 17:48:11 2011 +0000
+++ b/sys/kern/kern_exec.c      Sat Aug 27 17:51:38 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_exec.c,v 1.325 2011/08/26 19:07:13 jmcneill Exp $ */
+/*     $NetBSD: kern_exec.c,v 1.326 2011/08/27 17:51:38 reinoud Exp $  */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.325 2011/08/26 19:07:13 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.326 2011/08/27 17:51:38 reinoud Exp $");
 
 #include "opt_exec.h"
 #include "opt_ktrace.h"
@@ -850,6 +850,29 @@
        if (pack.ep_vmcmds.evs_used == 0)
                panic("%s: no vmcmds", __func__);
 #endif
+
+#ifdef DEBUG_EXEC
+       {
+               size_t j;
+               struct exec_vmcmd *vp = &pack.ep_vmcmds.evs_cmds[0];
+               DPRINTF("vmcmds %u\n", pack.ep_vmcmds.evs_used);
+               for (j = 0; j < pack.ep_vmcmds.evs_used; j++) {
+                       DPRINTF("vmcmd[%zu] = vmcmd_map_%s %#"
+                           PRIxVADDR"/%#"PRIxVSIZE" fd@%#"
+                           PRIxVSIZE" prot=0%o flags=%d\n", j,
+                           vp[j].ev_proc == vmcmd_map_pagedvn ?
+                           "pagedvn" :
+                           vp[j].ev_proc == vmcmd_map_readvn ?
+                           "readvn" :
+                           vp[j].ev_proc == vmcmd_map_zero ?
+                           "zero" : "*unknown*",
+                           vp[j].ev_addr, vp[j].ev_len,
+                           vp[j].ev_offset, vp[j].ev_prot,
+                           vp[j].ev_flags);
+               }
+       }
+#endif /* DEBUG_EXEC */
+
        for (i = 0; i < pack.ep_vmcmds.evs_used && !error; i++) {
                struct exec_vmcmd *vcp;
 
@@ -870,10 +893,10 @@
                if (error) {
                        size_t j;
                        struct exec_vmcmd *vp = &pack.ep_vmcmds.evs_cmds[0];
-                       uprintf("vmcmds %zu/%u, error %d\n", i, 
+                       DPRINTF("vmcmds %zu/%u, error %d\n", i, 
                            pack.ep_vmcmds.evs_used, error);
-                       for (j = 0; j <= i; j++)
-                               uprintf("vmcmd[%zu] = vmcmd_map_%s %#"
+                       for (j = 0; j < pack.ep_vmcmds.evs_used; j++) {
+                               DPRINTF("vmcmd[%zu] = vmcmd_map_%s %#"
                                    PRIxVADDR"/%#"PRIxVSIZE" fd@%#"
                                    PRIxVSIZE" prot=0%o flags=%d\n", j,
                                    vp[j].ev_proc == vmcmd_map_pagedvn ?
@@ -885,6 +908,9 @@
                                    vp[j].ev_addr, vp[j].ev_len,
                                    vp[j].ev_offset, vp[j].ev_prot,
                                    vp[j].ev_flags);
+                               if (j == i)
+                                       DPRINTF("     ^--- failed\n");
+                       }
                }
 #endif /* DEBUG_EXEC */
                if (vcp->ev_flags & VMCMD_BASE)
@@ -1249,6 +1275,7 @@
        pathbuf_stringcopy_put(pb, pathstring);
        pathbuf_destroy(pb);
        PNBUF_PUT(resolvedpathbuf);
+       DPRINTF("%s finished\n", __func__);
        return (EJUSTRETURN);
 
  bad:



Home | Main Index | Thread Index | Old Index