Module Name:    src
Committed By:   reinoud
Date:           Sat Aug 27 17:51:38 UTC 2011

Modified Files:
        src/sys/kern: kern_exec.c

Log Message:
Enhance EXEC_DEBUG by also printing the UVM commands


To generate a diff of this commit:
cvs rdiff -u -r1.325 -r1.326 src/sys/kern/kern_exec.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_exec.c
diff -u src/sys/kern/kern_exec.c:1.325 src/sys/kern/kern_exec.c:1.326
--- src/sys/kern/kern_exec.c:1.325	Fri Aug 26 19:07:13 2011
+++ src/sys/kern/kern_exec.c	Sat Aug 27 17:51:38 2011
@@ -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:

Reply via email to