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