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: