CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Mon Mar 24 18:51:45 UTC 2014 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_runq.c Log Message: Use the cpu_name in ci_data To generate a diff of this commit: cvs rdiff -u -r1.22.4.3.4.2 -r1.22.4.3.4.3 src/sys/kern/kern_runq.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_runq.c diff -u src/sys/kern/kern_runq.c:1.22.4.3.4.2 src/sys/kern/kern_runq.c:1.22.4.3.4.3 --- src/sys/kern/kern_runq.c:1.22.4.3.4.2 Sat Feb 5 06:00:14 2011 +++ src/sys/kern/kern_runq.c Mon Mar 24 18:51:45 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_runq.c,v 1.22.4.3.4.2 2011/02/05 06:00:14 cliff Exp $ */ +/* $NetBSD: kern_runq.c,v 1.22.4.3.4.3 2014/03/24 18:51:45 matt Exp $ */ /* * Copyright (c) 2007, 2008 Mindaugas Rasiukevicius @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_runq.c,v 1.22.4.3.4.2 2011/02/05 06:00:14 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_runq.c,v 1.22.4.3.4.3 2014/03/24 18:51:45 matt Exp $"); #include "opt_multiprocessor.h" @@ -145,7 +145,6 @@ sched_cpuattach(struct cpu_info *ci) runqueue_t *ci_rq; void *rq_ptr; u_int i, size; - char *cpuname; if (ci->ci_schedstate.spc_lwplock == NULL) { ci->ci_schedstate.spc_lwplock = @@ -178,17 +177,14 @@ sched_cpuattach(struct cpu_info *ci) ci->ci_schedstate.spc_sched_info = ci_rq; - cpuname = kmem_alloc(8, KM_SLEEP); - snprintf(cpuname, 8, "cpu%d", cpu_index(ci)); - evcnt_attach_dynamic(&ci_rq->r_ev_pull, EVCNT_TYPE_MISC, NULL, - cpuname, "runqueue pull"); + ci->ci_data.cpu_name, "runqueue pull"); evcnt_attach_dynamic(&ci_rq->r_ev_push, EVCNT_TYPE_MISC, NULL, - cpuname, "runqueue push"); + ci->ci_data.cpu_name, "runqueue push"); evcnt_attach_dynamic(&ci_rq->r_ev_stay, EVCNT_TYPE_MISC, NULL, - cpuname, "runqueue stay"); + ci->ci_data.cpu_name, "runqueue stay"); evcnt_attach_dynamic(&ci_rq->r_ev_localize, EVCNT_TYPE_MISC, NULL, - cpuname, "runqueue localize"); + ci->ci_data.cpu_name, "runqueue localize"); } /*
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Mon Mar 24 07:36:48 UTC 2014 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_evcnt.c Log Message: Fix infinite recursion. To generate a diff of this commit: cvs rdiff -u -r1.4.94.3 -r1.4.94.4 src/sys/kern/subr_evcnt.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/subr_evcnt.c diff -u src/sys/kern/subr_evcnt.c:1.4.94.3 src/sys/kern/subr_evcnt.c:1.4.94.4 --- src/sys/kern/subr_evcnt.c:1.4.94.3 Sat Feb 15 10:13:24 2014 +++ src/sys/kern/subr_evcnt.c Mon Mar 24 07:36:48 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_evcnt.c,v 1.4.94.3 2014/02/15 10:13:24 matt Exp $ */ +/* $NetBSD: subr_evcnt.c,v 1.4.94.4 2014/03/24 07:36:48 matt Exp $ */ /* * Copyright (c) 1996, 2000 Christopher G. Demetriou @@ -77,7 +77,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4.94.3 2014/02/15 10:13:24 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4.94.4 2014/03/24 07:36:48 matt Exp $"); #include "opt_ddb.h" @@ -153,7 +153,7 @@ evcnt_attach_dynamic(struct evcnt *ev, i const char *group, const char *name) { memset(ev, 0, sizeof *ev); - evcnt_attach_dynamic(ev, type, parent, group, name); + evcnt_attach_dynamic_nozero(ev, type, parent, group, name); } void
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Fri Mar 14 22:34:35 UTC 2014 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_malloc.c Log Message: Deal with the issue that VM_MAP_INTRSAFE km_suballoc returns more than asked for so the space needs for kmemusage accounting has to needs adjusted as well. To generate a diff of this commit: cvs rdiff -u -r1.121.10.2 -r1.121.10.3 src/sys/kern/kern_malloc.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_malloc.c diff -u src/sys/kern/kern_malloc.c:1.121.10.2 src/sys/kern/kern_malloc.c:1.121.10.3 --- src/sys/kern/kern_malloc.c:1.121.10.2 Fri Mar 14 21:45:41 2014 +++ src/sys/kern/kern_malloc.c Fri Mar 14 22:34:35 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $ */ +/* $NetBSD: kern_malloc.c,v 1.121.10.3 2014/03/14 22:34:35 matt Exp $ */ /* * Copyright (c) 1987, 1991, 1993 @@ -66,7 +66,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.3 2014/03/14 22:34:35 matt Exp $"); #include #include @@ -926,7 +926,12 @@ kmeminit(void) kmembase = (char *)kmb; kmemlimit = (char *)kml; - KASSERT(((kmemlimit - kmembase) >> PAGE_SHIFT) == nkmempages); + /* + * Since the suballoc was VM_MAP_INTRSAFE, the allocated size + * may be larger than was we asked for. Recompute nkmempages + * to cover the additional space allocated. + */ + nkmempages = (kmemlimit - kmembase) >> PAGE_SHIFT; kmemusage = (struct kmemusage *) uvm_km_alloc(kernel_map, (vsize_t)(nkmempages * sizeof(struct kmemusage)), 0,
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Fri Mar 14 21:45:42 UTC 2014 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_malloc.c Log Message: Make sure uvm_km_suballoc returned the correctly sized submap. To generate a diff of this commit: cvs rdiff -u -r1.121.10.1 -r1.121.10.2 src/sys/kern/kern_malloc.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_malloc.c diff -u src/sys/kern/kern_malloc.c:1.121.10.1 src/sys/kern/kern_malloc.c:1.121.10.2 --- src/sys/kern/kern_malloc.c:1.121.10.1 Wed Apr 21 00:28:16 2010 +++ src/sys/kern/kern_malloc.c Fri Mar 14 21:45:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_malloc.c,v 1.121.10.1 2010/04/21 00:28:16 matt Exp $ */ +/* $NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $ */ /* * Copyright (c) 1987, 1991, 1993 @@ -66,7 +66,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.1 2010/04/21 00:28:16 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $"); #include #include @@ -918,9 +918,6 @@ kmeminit(void) */ kmeminit_nkmempages(); - kmemusage = (struct kmemusage *) uvm_km_alloc(kernel_map, - (vsize_t)(nkmempages * sizeof(struct kmemusage)), 0, - UVM_KMF_WIRED|UVM_KMF_ZERO); kmb = 0; kmem_map = uvm_km_suballoc(kernel_map, &kmb, &kml, ((vsize_t)nkmempages << PAGE_SHIFT), @@ -928,6 +925,12 @@ kmeminit(void) uvm_km_vacache_init(kmem_map, "kvakmem", 0); kmembase = (char *)kmb; kmemlimit = (char *)kml; + + KASSERT(((kmemlimit - kmembase) >> PAGE_SHIFT) == nkmempages); + + kmemusage = (struct kmemusage *) uvm_km_alloc(kernel_map, + (vsize_t)(nkmempages * sizeof(struct kmemusage)), 0, + UVM_KMF_WIRED|UVM_KMF_ZERO); #ifdef KMEMSTATS for (indx = 0; indx < MINBUCKET + 16; indx++) { if (1 << indx >= PAGE_SIZE)
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Fri Feb 14 18:31:49 UTC 2014 Modified Files: src/sys/kern [matt-nb5-mips64]: vfs_subr.c Log Message: vpanic -> vnpanic To generate a diff of this commit: cvs rdiff -u -r1.357.4.4.2.1.2.1 -r1.357.4.4.2.1.2.2 src/sys/kern/vfs_subr.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/vfs_subr.c diff -u src/sys/kern/vfs_subr.c:1.357.4.4.2.1.2.1 src/sys/kern/vfs_subr.c:1.357.4.4.2.1.2.2 --- src/sys/kern/vfs_subr.c:1.357.4.4.2.1.2.1 Wed Apr 21 00:28:19 2010 +++ src/sys/kern/vfs_subr.c Fri Feb 14 18:31:49 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_subr.c,v 1.357.4.4.2.1.2.1 2010/04/21 00:28:19 matt Exp $ */ +/* $NetBSD: vfs_subr.c,v 1.357.4.4.2.1.2.2 2014/02/14 18:31:49 matt Exp $ */ /*- * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008 The NetBSD Foundation, Inc. @@ -91,7 +91,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.357.4.4.2.1.2.1 2010/04/21 00:28:19 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.357.4.4.2.1.2.2 2014/02/14 18:31:49 matt Exp $"); #include "opt_ddb.h" #include "opt_compat_netbsd.h" @@ -191,7 +191,7 @@ static void vrele_thread(void *); static void insmntque(vnode_t *, struct mount *); static int getdevvp(dev_t, vnode_t **, enum vtype); static vnode_t *getcleanvnode(void);; -void vpanic(vnode_t *, const char *); +void vnpanic(vnode_t *, const char *); #ifdef DEBUG void printlockedvnodes(void); @@ -199,14 +199,14 @@ void printlockedvnodes(void); #ifdef DIAGNOSTIC void -vpanic(vnode_t *vp, const char *msg) +vnpanic(vnode_t *vp, const char *msg) { vprint(NULL, vp); panic("%s\n", msg); } #else -#define vpanic(vp, msg) /* nothing */ +#define vnpanic(vp, msg) /* nothing */ #endif void @@ -333,14 +333,14 @@ try_nextlist: * lists. */ if (vp->v_usecount != 0) { - vpanic(vp, "free vnode isn't"); + vnpanic(vp, "free vnode isn't"); } if ((vp->v_iflag & VI_CLEAN) != 0) { - vpanic(vp, "clean vnode on freelist"); + vnpanic(vp, "clean vnode on freelist"); } if (vp->v_freelisthd != listhd) { printf("vnode sez %p, listhd %p\n", vp->v_freelisthd, listhd); - vpanic(vp, "list head mismatch"); + vnpanic(vp, "list head mismatch"); } if (!mutex_tryenter(&vp->v_interlock)) continue; @@ -411,13 +411,13 @@ try_nextlist: if (vp->v_data != NULL || vp->v_uobj.uo_npages != 0 || !TAILQ_EMPTY(&vp->v_uobj.memq)) { - vpanic(vp, "cleaned vnode isn't"); + vnpanic(vp, "cleaned vnode isn't"); } if (vp->v_numoutput != 0) { - vpanic(vp, "clean vnode has pending I/O's"); + vnpanic(vp, "clean vnode has pending I/O's"); } if ((vp->v_iflag & VI_ONWORKLST) != 0) { - vpanic(vp, "clean vnode on syncer list"); + vnpanic(vp, "clean vnode on syncer list"); } return vp; @@ -1376,7 +1376,7 @@ vrelel(vnode_t *vp, int flags) if (__predict_false(vp->v_op == dead_vnodeop_p && (vp->v_iflag & (VI_CLEAN|VI_XLOCK)) == 0)) { - vpanic(vp, "dead but not clean"); + vnpanic(vp, "dead but not clean"); } /* @@ -1389,7 +1389,7 @@ vrelel(vnode_t *vp, int flags) return; } if (vp->v_usecount <= 0 || vp->v_writecount != 0) { - vpanic(vp, "vrelel: bad ref count"); + vnpanic(vp, "vrelel: bad ref count"); } KASSERT((vp->v_iflag & VI_XLOCK) == 0); @@ -1421,7 +1421,7 @@ vrelel(vnode_t *vp, int flags) LK_RETRY); if (error != 0) { /* XXX */ -vpanic(vp, "vrele: unable to lock %p"); +vnpanic(vp, "vrele: unable to lock %p"); } mutex_enter(&vp->v_interlock); /* @@ -1642,7 +1642,7 @@ holdrelel(vnode_t *vp) KASSERT((vp->v_iflag & VI_MARKER) == 0); if (vp->v_holdcnt <= 0) { - vpanic(vp, "holdrelel: holdcnt vp %p"); + vnpanic(vp, "holdrelel: holdcnt vp %p"); } vp->v_holdcnt--; @@ -1891,7 +1891,7 @@ vclean(vnode_t *vp, int flags) /* Disassociate the underlying file system from the vnode. */ if (VOP_RECLAIM(vp)) { - vpanic(vp, "vclean: cannot reclaim"); + vnpanic(vp, "vclean: cannot reclaim"); } KASSERT(vp->v_uobj.uo_npages == 0);
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Mon Jul 9 17:27:15 UTC 2012 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_kmem.c Log Message: Add another KASSERT... To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.19.26.1 src/sys/kern/subr_kmem.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/subr_kmem.c diff -u src/sys/kern/subr_kmem.c:1.19 src/sys/kern/subr_kmem.c:1.19.26.1 --- src/sys/kern/subr_kmem.c:1.19 Sat Feb 9 12:56:20 2008 +++ src/sys/kern/subr_kmem.c Mon Jul 9 17:27:15 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_kmem.c,v 1.19 2008/02/09 12:56:20 yamt Exp $ */ +/* subr_kmem.c,v 1.19 2008/02/09 12:56:20 yamt Exp */ /*- * Copyright (c)2006 YAMAMOTO Takashi, @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.19 2008/02/09 12:56:20 yamt Exp $"); +__KERNEL_RCSID(0, "subr_kmem.c,v 1.19 2008/02/09 12:56:20 yamt Exp"); #include #include @@ -209,6 +209,7 @@ kmem_backend_free(vmem_t *dummy, vmem_ad KASSERT(dummy == NULL); KASSERT(addr != 0); KASSERT(size != 0); + KASSERT(addr == trunc_page(addr)); KASSERT(size == round_page(size)); kmem_poison_check((void *)addr, size);
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Mon Jun 4 18:47:08 UTC 2012 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_sysctl.c Log Message: Each va_start needs a corresponding va_end, even in the error paths... To generate a diff of this commit: cvs rdiff -u -r1.218 -r1.218.8.1 src/sys/kern/kern_sysctl.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_sysctl.c diff -u src/sys/kern/kern_sysctl.c:1.218 src/sys/kern/kern_sysctl.c:1.218.8.1 --- src/sys/kern/kern_sysctl.c:1.218 Thu Oct 23 20:41:14 2008 +++ src/sys/kern/kern_sysctl.c Mon Jun 4 18:47:07 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_sysctl.c,v 1.218 2008/10/23 20:41:14 christos Exp $ */ +/* kern_sysctl.c,v 1.218 2008/10/23 20:41:14 christos Exp */ /*- * Copyright (c) 2003, 2007, 2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_sysctl.c,v 1.218 2008/10/23 20:41:14 christos Exp $"); +__KERNEL_RCSID(0, "kern_sysctl.c,v 1.218 2008/10/23 20:41:14 christos Exp"); #include "opt_defcorename.h" #include "ksyms.h" @@ -1935,19 +1935,26 @@ sysctl_createv(struct sysctllog **log, i */ va_start(ap, newlen); namelen = 0; + error = 0; ni = -1; do { - if (++ni == CTL_MAXNAME) - return (ENAMETOOLONG); + if (++ni == CTL_MAXNAME) { + error = ENAMETOOLONG; + break; + } name[ni] = va_arg(ap, int); /* * sorry, this is not supported from here */ - if (name[ni] == CTL_CREATESYM) - return (EINVAL); + if (name[ni] == CTL_CREATESYM) { + error = EINVAL; + break; + } } while (name[ni] != CTL_EOL && name[ni] != CTL_CREATE); - namelen = ni + (name[ni] == CTL_CREATE ? 1 : 0); va_end(ap); + if (error) + return error; + namelen = ni + (name[ni] == CTL_CREATE ? 1 : 0); /* * what's it called
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Wed May 25 05:35:50 UTC 2011 Modified Files: src/sys/kern [matt-nb5-mips64]: tty.c Log Message: Merge in LWP_PC status change from -current. Print PC addr if lwp is running or runnable. To generate a diff of this commit: cvs rdiff -u -r1.227.4.1.4.1 -r1.227.4.1.4.2 src/sys/kern/tty.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/tty.c diff -u src/sys/kern/tty.c:1.227.4.1.4.1 src/sys/kern/tty.c:1.227.4.1.4.2 --- src/sys/kern/tty.c:1.227.4.1.4.1 Wed Apr 21 00:28:18 2010 +++ src/sys/kern/tty.c Wed May 25 05:35:49 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: tty.c,v 1.227.4.1.4.1 2010/04/21 00:28:18 matt Exp $ */ +/* tty.c,v 1.227.4.1.4.1 2010/04/21 00:28:18 matt Exp */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.227.4.1.4.1 2010/04/21 00:28:18 matt Exp $"); +__KERNEL_RCSID(0, "tty.c,v 1.227.4.1.4.1 2010/04/21 00:28:18 matt Exp"); #include #include @@ -74,6 +74,7 @@ #undef TTYDEFCHARS #include #include +#include #include #include #include @@ -2399,15 +2400,36 @@ mutex_enter(pick->p_lock); LIST_FOREACH(l, &pick->p_lwps, l_sibling) { + const char *lp; lwp_lock(l); - snprintf(lmsg, sizeof(lmsg), "%s%s", - l->l_stat == LSONPROC ? "running" : - l->l_stat == LSRUN ? "runnable" : - l->l_wchan ? l->l_wmesg : "iowait", - (LIST_NEXT(l, l_sibling) != NULL) ? " " : "] "); - lwp_unlock(l); - strlcat(buf, lmsg, bufsz); +#ifdef LWP_PC +#define FMT_RUN "%#"PRIxVADDR +#define VAL_RUNNING (vaddr_t)LWP_PC(l) +#define VAL_RUNABLE (vaddr_t)LWP_PC(l) +#else +#define FMT_RUN "%s" +#define VAL_RUNNING "running" +#define VAL_RUNABLE "runnable" +#endif + switch (l->l_stat) { + case LSONPROC: + snprintf(lmsg, sizeof(lmsg), FMT_RUN"/%d", VAL_RUNNING, + cpu_index(l->l_cpu)); + lp = lmsg; + break; + case LSRUN: + snprintf(lmsg, sizeof(lmsg), FMT_RUN, VAL_RUNABLE); + lp = lmsg; + break; + default: + lp = l->l_wchan ? l->l_wmesg : "iowait"; + break; + } + strlcat(buf, lp, bufsz); + strlcat(buf, LIST_NEXT(l, l_sibling) != NULL ? " " : "] ", + bufsz); pctcpu += l->l_pctcpu; + lwp_unlock(l); } pctcpu += pick->p_pctcpu; calcru(pick, &utime, &stime, NULL, NULL);
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Tue Feb 8 21:56:02 UTC 2011 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_autoconf.c Log Message: use mutex_obj_alloc() to allocate config_queues_lock and dc_funcs_lock instead of declaring them statically. To generate a diff of this commit: cvs rdiff -u -r1.163.4.2.4.2 -r1.163.4.2.4.3 src/sys/kern/subr_autoconf.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/subr_autoconf.c diff -u src/sys/kern/subr_autoconf.c:1.163.4.2.4.2 src/sys/kern/subr_autoconf.c:1.163.4.2.4.3 --- src/sys/kern/subr_autoconf.c:1.163.4.2.4.2 Tue Feb 8 06:04:59 2011 +++ src/sys/kern/subr_autoconf.c Tue Feb 8 21:56:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_autoconf.c,v 1.163.4.2.4.2 2011/02/08 06:04:59 cliff Exp $ */ +/* $NetBSD: subr_autoconf.c,v 1.163.4.2.4.3 2011/02/08 21:56:01 cliff Exp $ */ /* * Copyright (c) 1996, 2000 Christopher G. Demetriou @@ -77,7 +77,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.163.4.2.4.2 2011/02/08 06:04:59 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.163.4.2.4.3 2011/02/08 21:56:01 cliff Exp $"); #include "opt_multiprocessor.h" #include "opt_ddb.h" @@ -204,14 +204,14 @@ * - interrupt_config_queue * is held for short durations, and is initialized to spin */ -static kmutex_t config_queues_lock; +static kmutex_t *config_queues_lock; /* * dc_funcs_lock ensures the driver dc_func's are not called concurrently * many (most?) are not MP safe * is held for unknown durations, and is initialized to sleep */ -static kmutex_t dc_funcs_lock; +static kmutex_t *dc_funcs_lock; struct deferred_config_head deferred_config_queue = TAILQ_HEAD_INITIALIZER(deferred_config_queue); @@ -376,9 +376,8 @@ mutex_init(&config_misc_lock, MUTEX_DEFAULT, IPL_NONE); cv_init(&config_misc_cv, "cfgmisc"); - mutex_init(&dc_funcs_lock, MUTEX_DEFAULT, IPL_SOFTNET); - - mutex_init(&config_queues_lock, MUTEX_DEFAULT, IPL_VM); + dc_funcs_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_SOFTNET); + config_queues_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_VM); /* allcfdrivers is statically initialized. */ for (i = 0; cfdriver_list_initial[i] != NULL; i++) { @@ -416,18 +415,18 @@ { struct deferred_config *dc; - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); while ((dc = TAILQ_FIRST(&interrupt_config_queue)) != NULL) { TAILQ_REMOVE(&interrupt_config_queue, dc, dc_queue); - mutex_exit(&config_queues_lock); - mutex_enter(&dc_funcs_lock); + mutex_exit(config_queues_lock); + mutex_enter(dc_funcs_lock); (*dc->dc_func)(dc->dc_dev); - mutex_exit(&dc_funcs_lock); + mutex_exit(dc_funcs_lock); kmem_free(dc, sizeof(*dc)); config_pending_decr(); - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); } - mutex_exit(&config_queues_lock); + mutex_exit(config_queues_lock); kthread_exit(0); } @@ -1677,13 +1676,13 @@ panic("config_defer: can't defer config of a root device"); #ifdef DIAGNOSTIC - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); for (dc = TAILQ_FIRST(&deferred_config_queue); dc != NULL; dc = TAILQ_NEXT(dc, dc_queue)) { if (dc->dc_dev == dev) panic("config_defer: deferred twice"); } - mutex_exit(&config_queues_lock); + mutex_exit(config_queues_lock); #endif dc = kmem_alloc(sizeof(*dc), kmflags); @@ -1693,9 +1692,9 @@ dc->dc_dev = dev; dc->dc_func = func; - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); TAILQ_INSERT_TAIL(&deferred_config_queue, dc, dc_queue); - mutex_exit(&config_queues_lock); + mutex_exit(config_queues_lock); config_pending_incr(); } @@ -1719,13 +1718,13 @@ } #ifdef DIAGNOSTIC - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); for (dc = TAILQ_FIRST(&interrupt_config_queue); dc != NULL; dc = TAILQ_NEXT(dc, dc_queue)) { if (dc->dc_dev == dev) panic("config_interrupts: deferred twice"); } - mutex_exit(&config_queues_lock); + mutex_exit(config_queues_lock); #endif dc = kmem_alloc(sizeof(*dc), kmflags); @@ -1734,9 +1733,9 @@ dc->dc_dev = dev; dc->dc_func = func; - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); TAILQ_INSERT_TAIL(&interrupt_config_queue, dc, dc_queue); - mutex_exit(&config_queues_lock); + mutex_exit(config_queues_lock); config_pending_incr(); } @@ -1749,21 +1748,21 @@ { struct deferred_config *dc, *ndc; - mutex_enter(&config_queues_lock); + mutex_enter(config_queues_lock); for (dc = TAILQ_FIRST(queue); dc != NULL; dc = ndc) { ndc = TAILQ_NEXT(dc, dc_queue); if (parent == NULL || dc->dc_dev->dv_parent == parent) { TAILQ_REMOVE(queue, dc, dc_queue); - mutex_exit(&config_queues_lock); - mutex_enter(&dc_funcs_lock); + mutex_exit(config_queues_lock); + mutex_enter(dc_funcs_lock); (*dc->dc_func)(dc->dc_dev); -
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Tue Feb 8 06:05:00 UTC 2011 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_autoconf.c Log Message: - add config_queues_lock to serialize access to deferred_config_queue and interrupt_config_queue for adds, deletes and (those DIAGNOSTIC) searches - add dc_funcs_lock to serialize dispatch of deferred config functions many (all?) of which may not be MP safe. To generate a diff of this commit: cvs rdiff -u -r1.163.4.2.4.1 -r1.163.4.2.4.2 src/sys/kern/subr_autoconf.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/subr_autoconf.c diff -u src/sys/kern/subr_autoconf.c:1.163.4.2.4.1 src/sys/kern/subr_autoconf.c:1.163.4.2.4.2 --- src/sys/kern/subr_autoconf.c:1.163.4.2.4.1 Sat Feb 5 06:00:14 2011 +++ src/sys/kern/subr_autoconf.c Tue Feb 8 06:04:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_autoconf.c,v 1.163.4.2.4.1 2011/02/05 06:00:14 cliff Exp $ */ +/* $NetBSD: subr_autoconf.c,v 1.163.4.2.4.2 2011/02/08 06:04:59 cliff Exp $ */ /* * Copyright (c) 1996, 2000 Christopher G. Demetriou @@ -77,7 +77,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.163.4.2.4.1 2011/02/05 06:00:14 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.163.4.2.4.2 2011/02/08 06:04:59 cliff Exp $"); #include "opt_multiprocessor.h" #include "opt_ddb.h" @@ -198,6 +198,21 @@ TAILQ_HEAD(deferred_config_head, deferred_config); +/* + * config_queues_lock protects MP access to + * - deferred_config_queue + * - interrupt_config_queue + * is held for short durations, and is initialized to spin + */ +static kmutex_t config_queues_lock; + +/* + * dc_funcs_lock ensures the driver dc_func's are not called concurrently + * many (most?) are not MP safe + * is held for unknown durations, and is initialized to sleep + */ +static kmutex_t dc_funcs_lock; + struct deferred_config_head deferred_config_queue = TAILQ_HEAD_INITIALIZER(deferred_config_queue); struct deferred_config_head interrupt_config_queue = @@ -361,6 +376,10 @@ mutex_init(&config_misc_lock, MUTEX_DEFAULT, IPL_NONE); cv_init(&config_misc_cv, "cfgmisc"); + mutex_init(&dc_funcs_lock, MUTEX_DEFAULT, IPL_SOFTNET); + + mutex_init(&config_queues_lock, MUTEX_DEFAULT, IPL_VM); + /* allcfdrivers is statically initialized. */ for (i = 0; cfdriver_list_initial[i] != NULL; i++) { if (config_cfdriver_attach(cfdriver_list_initial[i]) != 0) @@ -397,12 +416,19 @@ { struct deferred_config *dc; + mutex_enter(&config_queues_lock); while ((dc = TAILQ_FIRST(&interrupt_config_queue)) != NULL) { TAILQ_REMOVE(&interrupt_config_queue, dc, dc_queue); + mutex_exit(&config_queues_lock); + mutex_enter(&dc_funcs_lock); (*dc->dc_func)(dc->dc_dev); + mutex_exit(&dc_funcs_lock); kmem_free(dc, sizeof(*dc)); config_pending_decr(); + mutex_enter(&config_queues_lock); } + mutex_exit(&config_queues_lock); + kthread_exit(0); } @@ -1651,11 +1677,13 @@ panic("config_defer: can't defer config of a root device"); #ifdef DIAGNOSTIC + mutex_enter(&config_queues_lock); for (dc = TAILQ_FIRST(&deferred_config_queue); dc != NULL; dc = TAILQ_NEXT(dc, dc_queue)) { if (dc->dc_dev == dev) panic("config_defer: deferred twice"); } + mutex_exit(&config_queues_lock); #endif dc = kmem_alloc(sizeof(*dc), kmflags); @@ -1664,7 +1692,11 @@ dc->dc_dev = dev; dc->dc_func = func; + + mutex_enter(&config_queues_lock); TAILQ_INSERT_TAIL(&deferred_config_queue, dc, dc_queue); + mutex_exit(&config_queues_lock); + config_pending_incr(); } @@ -1687,11 +1719,13 @@ } #ifdef DIAGNOSTIC + mutex_enter(&config_queues_lock); for (dc = TAILQ_FIRST(&interrupt_config_queue); dc != NULL; dc = TAILQ_NEXT(dc, dc_queue)) { if (dc->dc_dev == dev) panic("config_interrupts: deferred twice"); } + mutex_exit(&config_queues_lock); #endif dc = kmem_alloc(sizeof(*dc), kmflags); @@ -1700,7 +1734,9 @@ dc->dc_dev = dev; dc->dc_func = func; + mutex_enter(&config_queues_lock); TAILQ_INSERT_TAIL(&interrupt_config_queue, dc, dc_queue); + mutex_exit(&config_queues_lock); config_pending_incr(); } @@ -1713,15 +1749,21 @@ { struct deferred_config *dc, *ndc; + mutex_enter(&config_queues_lock); for (dc = TAILQ_FIRST(queue); dc != NULL; dc = ndc) { ndc = TAILQ_NEXT(dc, dc_queue); if (parent == NULL || dc->dc_dev->dv_parent == parent) { TAILQ_REMOVE(queue, dc, dc_queue); + mutex_exit(&config_queues_lock); + mutex_enter(&dc_funcs_lock); (*dc->dc_func)(dc->dc_dev); + mutex_exit(&dc_funcs_lock); kmem_free(dc, sizeof(*dc)); config_pending_decr(); + mutex_enter(&config_queues_lock); } } + mutex_exit(&config_queues_lock); } /*
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Sat Feb 5 06:54:58 UTC 2011 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_evcnt.c Log Message: - remove leftover debug print To generate a diff of this commit: cvs rdiff -u -r1.4.94.1 -r1.4.94.2 src/sys/kern/subr_evcnt.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/subr_evcnt.c diff -u src/sys/kern/subr_evcnt.c:1.4.94.1 src/sys/kern/subr_evcnt.c:1.4.94.2 --- src/sys/kern/subr_evcnt.c:1.4.94.1 Sat Feb 5 06:13:45 2011 +++ src/sys/kern/subr_evcnt.c Sat Feb 5 06:54:58 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_evcnt.c,v 1.4.94.1 2011/02/05 06:13:45 cliff Exp $ */ +/* $NetBSD: subr_evcnt.c,v 1.4.94.2 2011/02/05 06:54:58 cliff Exp $ */ /* * Copyright (c) 1996, 2000 Christopher G. Demetriou @@ -77,7 +77,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4.94.1 2011/02/05 06:13:45 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4.94.2 2011/02/05 06:54:58 cliff Exp $"); #include "opt_ddb.h" @@ -125,9 +125,6 @@ { int len; -#ifdef DEBUG /* XXX TMP FIXME */ - printf("%s: %p \"%s\"\n", __func__, ev, ev->ev_name); -#endif len = strlen(ev->ev_group); #ifdef DIAGNOSTIC if (len >= EVCNT_STRING_MAX) /* ..._MAX includes NUL */
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Sat Feb 5 06:13:45 UTC 2011 Modified Files: src/sys/kern [matt-nb5-mips64]: subr_evcnt.c Log Message: - add evcnt_lock and use to protect the 'allevents' list (pulled back fromk -current) To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.4.94.1 src/sys/kern/subr_evcnt.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/subr_evcnt.c diff -u src/sys/kern/subr_evcnt.c:1.4 src/sys/kern/subr_evcnt.c:1.4.94.1 --- src/sys/kern/subr_evcnt.c:1.4 Sun Dec 11 12:24:30 2005 +++ src/sys/kern/subr_evcnt.c Sat Feb 5 06:13:45 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_evcnt.c,v 1.4 2005/12/11 12:24:30 christos Exp $ */ +/* $NetBSD: subr_evcnt.c,v 1.4.94.1 2011/02/05 06:13:45 cliff Exp $ */ /* * Copyright (c) 1996, 2000 Christopher G. Demetriou @@ -77,16 +77,18 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4 2005/12/11 12:24:30 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_evcnt.c,v 1.4.94.1 2011/02/05 06:13:45 cliff Exp $"); #include "opt_ddb.h" #include #include +#include #include /* list of all events */ struct evcntlist allevents = TAILQ_HEAD_INITIALIZER(allevents); +static kmutex_t evcnt_lock; /* * We need a dummy object to stuff into the evcnt link set to @@ -105,6 +107,8 @@ __link_set_decl(evcnts, struct evcnt); struct evcnt * const *evp; + mutex_init(&evcnt_lock, MUTEX_DEFAULT, IPL_NONE); + __link_set_foreach(evp, evcnts) { if (*evp == &dummy_static_evcnt) continue; @@ -121,6 +125,9 @@ { int len; +#ifdef DEBUG /* XXX TMP FIXME */ + printf("%s: %p \"%s\"\n", __func__, ev, ev->ev_name); +#endif len = strlen(ev->ev_group); #ifdef DIAGNOSTIC if (len >= EVCNT_STRING_MAX) /* ..._MAX includes NUL */ @@ -135,7 +142,9 @@ #endif ev->ev_namelen = len; + mutex_enter(&evcnt_lock); TAILQ_INSERT_TAIL(&allevents, ev, ev_list); + mutex_exit(&evcnt_lock); } /* @@ -162,7 +171,9 @@ evcnt_detach(struct evcnt *ev) { + mutex_enter(&evcnt_lock); TAILQ_REMOVE(&allevents, ev, ev_list); + mutex_exit(&evcnt_lock); } #ifdef DDB
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Thu Aug 19 07:23:24 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_exec.c Log Message: Add some more debug printfs for various failures. To generate a diff of this commit: cvs rdiff -u -r1.280.4.3.4.1 -r1.280.4.3.4.2 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.280.4.3.4.1 src/sys/kern/kern_exec.c:1.280.4.3.4.2 --- src/sys/kern/kern_exec.c:1.280.4.3.4.1 Wed Apr 21 00:28:16 2010 +++ src/sys/kern/kern_exec.c Thu Aug 19 07:23:24 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_exec.c,v 1.280.4.3.4.1 2010/04/21 00:28:16 matt Exp $ */ +/* $NetBSD: kern_exec.c,v 1.280.4.3.4.2 2010/08/19 07:23:24 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.280.4.3.4.1 2010/04/21 00:28:16 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.280.4.3.4.2 2010/08/19 07:23:24 matt Exp $"); #include "opt_ktrace.h" #include "opt_syscall_debug.h" @@ -1031,7 +1031,7 @@ (*pack.ep_esch->es_setregs)(l, &pack, (u_long) stack); /* map the process's signal trampoline code */ - if (exec_sigcode_map(p, pack.ep_esch->es_emul)) { + if ((error = exec_sigcode_map(p, pack.ep_esch->es_emul)) != 0) { DPRINTF(("execve: map sigcode failed %d\n", error)); goto exec_abort; } @@ -1204,8 +1204,10 @@ nullp = NULL; argc = arginfo->ps_nargvstr; envc = arginfo->ps_nenvstr; - if ((error = copyout(&argc, cpp++, sizeof(argc))) != 0) + if ((error = copyout(&argc, cpp++, sizeof(argc))) != 0) { + DPRINTF(("copyargs:%d copyout @%p %zu\n", __LINE__, cpp-1, sizeof(argc))); return error; + } dp = (char *) (cpp + argc + envc + 2 + pack->ep_esch->es_arglen); sp = argp; @@ -1213,23 +1215,39 @@ /* XXX don't copy them out, remap them! */ arginfo->ps_argvstr = cpp; /* remember location of argv for later */ - for (; --argc >= 0; sp += len, dp += len) - if ((error = copyout(&dp, cpp++, sizeof(dp))) != 0 || - (error = copyoutstr(sp, dp, ARG_MAX, &len)) != 0) + for (; --argc >= 0; sp += len, dp += len) { + if ((error = copyout(&dp, cpp++, sizeof(dp))) != 0) { + DPRINTF(("copyargs:%d copyout @%p %zu\n", __LINE__, cpp-1, sizeof(dp))); + return error; + } + if ((error = copyoutstr(sp, dp, ARG_MAX, &len)) != 0) { + DPRINTF(("copyargs:%d copyoutstr @%p %u\n", __LINE__, dp, ARG_MAX)); return error; + } + } - if ((error = copyout(&nullp, cpp++, sizeof(nullp))) != 0) + if ((error = copyout(&nullp, cpp++, sizeof(nullp))) != 0) { + DPRINTF(("copyargs:%d copyout @%p %zu\n", __LINE__, cpp-1, sizeof(nullp))); return error; + } arginfo->ps_envstr = cpp; /* remember location of envp for later */ - for (; --envc >= 0; sp += len, dp += len) - if ((error = copyout(&dp, cpp++, sizeof(dp))) != 0 || - (error = copyoutstr(sp, dp, ARG_MAX, &len)) != 0) + for (; --envc >= 0; sp += len, dp += len) { + if ((error = copyout(&dp, cpp++, sizeof(dp))) != 0) { + DPRINTF(("copyargs:%d copyout @%p %zu\n", __LINE__, cpp-1, sizeof(dp))); return error; + } + if ((error = copyoutstr(sp, dp, ARG_MAX, &len)) != 0) { + DPRINTF(("copyargs:%d copyoutstr @%p %u\n", __LINE__, dp, ARG_MAX)); + return error; + } + } - if ((error = copyout(&nullp, cpp++, sizeof(nullp))) != 0) + if ((error = copyout(&nullp, cpp++, sizeof(nullp))) != 0) { + DPRINTF(("copyargs:%d copyout @%p %zu\n", __LINE__, cpp-1, sizeof(nullp))); return error; + } *stackp = (char *)cpp; return 0; @@ -1665,6 +1683,10 @@ UVM_MAPFLAG(UVM_PROT_RX, UVM_PROT_RX, UVM_INH_SHARE, UVM_ADV_RANDOM, 0)); if (error) { + DPRINTF(("exec_sigcode_map:%d map %p " + "uvm_map %#"PRIxVSIZE"@%#"PRIxVADDR" failed %d\n", + __LINE__, &p->p_vmspace->vm_map, round_page(sz), va, + error)); (*uobj->pgops->pgo_detach)(uobj); return (error); }
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Thu Jun 10 00:42:16 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_subr.c Log Message: - in setroot(), in the `root on ...' case, if the lookup failed and we have no rootdev, then we have to ASK. To generate a diff of this commit: cvs rdiff -u -r1.192.4.1.4.3 -r1.192.4.1.4.4 src/sys/kern/kern_subr.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_subr.c diff -u src/sys/kern/kern_subr.c:1.192.4.1.4.3 src/sys/kern/kern_subr.c:1.192.4.1.4.4 --- src/sys/kern/kern_subr.c:1.192.4.1.4.3 Tue Jun 8 18:29:11 2010 +++ src/sys/kern/kern_subr.c Thu Jun 10 00:42:16 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_subr.c,v 1.192.4.1.4.3 2010/06/08 18:29:11 cliff Exp $ */ +/* $NetBSD: kern_subr.c,v 1.192.4.1.4.4 2010/06/10 00:42:16 cliff Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc. @@ -79,7 +79,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.3 2010/06/08 18:29:11 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.4 2010/06/10 00:42:16 cliff Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -973,17 +973,28 @@ * `root on ...' */ + dv = finddevice(rootspec); + + /* + * if the lookup failed and we have no rootdev + * then we have to ask + */ + if (dv == NULL && rootdev == NODEV) { + printf("device %s not configured\n", rootspec); + boothowto |= RB_ASKNAME; + goto top; + } + /* * If it's a network interface, we can bail out * early. */ - dv = finddevice(rootspec); if (dv != NULL && device_class(dv) == DV_IFNET) { rootdv = dv; goto haveroot; } - if (rootdev == NODEV && + if (dv != NULL && rootdev == NODEV && device_class(dv) == DV_DISK && device_is_a(dv, "dk") && (majdev = devsw_name2blk(device_xname(dv), NULL, 0)) >= 0) rootdev = makedev(majdev, device_unit(dv));
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Tue Jun 8 18:29:11 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_subr.c Log Message: pulled fix from -current (1.207) back to setroot(): when there is a rootspec, but it's a disk, don't say it's "not configured" just on the basis of finddevice() returning NULL -- that will always happen when e.g. rootspec is "sd0a" and the device xname is "sd0". To generate a diff of this commit: cvs rdiff -u -r1.192.4.1.4.2 -r1.192.4.1.4.3 src/sys/kern/kern_subr.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_subr.c diff -u src/sys/kern/kern_subr.c:1.192.4.1.4.2 src/sys/kern/kern_subr.c:1.192.4.1.4.3 --- src/sys/kern/kern_subr.c:1.192.4.1.4.2 Tue Jan 26 04:51:03 2010 +++ src/sys/kern/kern_subr.c Tue Jun 8 18:29:11 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_subr.c,v 1.192.4.1.4.2 2010/01/26 04:51:03 cliff Exp $ */ +/* $NetBSD: kern_subr.c,v 1.192.4.1.4.3 2010/06/08 18:29:11 cliff Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc. @@ -79,7 +79,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.2 2010/01/26 04:51:03 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.3 2010/06/08 18:29:11 cliff Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -974,20 +974,11 @@ */ /* - * if rootspec is not configured, ask (again) - */ - dv = finddevice(rootspec); - if (dv == NULL) { - printf("device %s not configured\n", rootspec); - boothowto |= RB_ASKNAME; - goto top; - } - - /* * If it's a network interface, we can bail out * early. */ - if (device_class(dv) == DV_IFNET) { + dv = finddevice(rootspec); + if (dv != NULL && device_class(dv) == DV_IFNET) { rootdv = dv; goto haveroot; }
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Tue Mar 16 16:08:29 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_ktrace.c Log Message: Make sure kte_space has at least enough alignment to store a register_t. To generate a diff of this commit: cvs rdiff -u -r1.147 -r1.147.10.1 src/sys/kern/kern_ktrace.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_ktrace.c diff -u src/sys/kern/kern_ktrace.c:1.147 src/sys/kern/kern_ktrace.c:1.147.10.1 --- src/sys/kern/kern_ktrace.c:1.147 Wed Oct 15 06:51:20 2008 +++ src/sys/kern/kern_ktrace.c Tue Mar 16 16:08:29 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_ktrace.c,v 1.147 2008/10/15 06:51:20 wrstuden Exp $ */ +/* $NetBSD: kern_ktrace.c,v 1.147.10.1 2010/03/16 16:08:29 matt Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.147 2008/10/15 06:51:20 wrstuden Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.147.10.1 2010/03/16 16:08:29 matt Exp $"); #include #include @@ -97,7 +97,7 @@ void *kte_buf; size_t kte_bufsz; #define KTE_SPACE 32 - uint8_t kte_space[KTE_SPACE]; + uint8_t kte_space[KTE_SPACE] __aligned(sizeof(register_t)); }; struct ktr_desc {
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Tue Jan 26 04:51:03 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_subr.c Log Message: remove debug prints To generate a diff of this commit: cvs rdiff -u -r1.192.4.1.4.1 -r1.192.4.1.4.2 src/sys/kern/kern_subr.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_subr.c diff -u src/sys/kern/kern_subr.c:1.192.4.1.4.1 src/sys/kern/kern_subr.c:1.192.4.1.4.2 --- src/sys/kern/kern_subr.c:1.192.4.1.4.1 Tue Jan 26 04:41:07 2010 +++ src/sys/kern/kern_subr.c Tue Jan 26 04:51:03 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_subr.c,v 1.192.4.1.4.1 2010/01/26 04:41:07 cliff Exp $ */ +/* $NetBSD: kern_subr.c,v 1.192.4.1.4.2 2010/01/26 04:51:03 cliff Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc. @@ -79,7 +79,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.1 2010/01/26 04:41:07 cliff Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.2 2010/01/26 04:51:03 cliff Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -786,7 +786,6 @@ * find a reasonable network interface for "rootspec". */ vops = vfs_getopsbyname("nfs"); -printf("%s:%d\n", __func__, __LINE__); if (vops != NULL && vops->vfs_mountroot == mountroot && rootspec == NULL && (bootdv == NULL || device_class(bootdv) != DV_IFNET)) { @@ -1020,8 +1019,6 @@ haveroot: root_device = rootdv; - -printf("%s:%d\n", __func__, __LINE__); switch (device_class(rootdv)) { case DV_IFNET: case DV_DISK:
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: cliff Date: Tue Jan 26 04:41:07 UTC 2010 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_subr.c Log Message: fix bug in setroot() where device_class() would be called with NULL pointer arg if root is specified in config but the specified device does not exist in the system. To generate a diff of this commit: cvs rdiff -u -r1.192.4.1 -r1.192.4.1.4.1 src/sys/kern/kern_subr.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_subr.c diff -u src/sys/kern/kern_subr.c:1.192.4.1 src/sys/kern/kern_subr.c:1.192.4.1.4.1 --- src/sys/kern/kern_subr.c:1.192.4.1 Mon Nov 17 18:56:05 2008 +++ src/sys/kern/kern_subr.c Tue Jan 26 04:41:07 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_subr.c,v 1.192.4.1 2008/11/17 18:56:05 snj Exp $ */ +/* $NetBSD: kern_subr.c,v 1.192.4.1.4.1 2010/01/26 04:41:07 cliff Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc. @@ -79,7 +79,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1 2008/11/17 18:56:05 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.192.4.1.4.1 2010/01/26 04:41:07 cliff Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -786,6 +786,7 @@ * find a reasonable network interface for "rootspec". */ vops = vfs_getopsbyname("nfs"); +printf("%s:%d\n", __func__, __LINE__); if (vops != NULL && vops->vfs_mountroot == mountroot && rootspec == NULL && (bootdv == NULL || device_class(bootdv) != DV_IFNET)) { @@ -974,11 +975,20 @@ */ /* + * if rootspec is not configured, ask (again) + */ + dv = finddevice(rootspec); + if (dv == NULL) { + printf("device %s not configured\n", rootspec); + boothowto |= RB_ASKNAME; + goto top; + } + + /* * If it's a network interface, we can bail out * early. */ - dv = finddevice(rootspec); - if (dv != NULL && device_class(dv) == DV_IFNET) { + if (device_class(dv) == DV_IFNET) { rootdv = dv; goto haveroot; } @@ -1011,6 +1021,7 @@ root_device = rootdv; +printf("%s:%d\n", __func__, __LINE__); switch (device_class(rootdv)) { case DV_IFNET: case DV_DISK:
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Sat Sep 12 16:53:50 UTC 2009 Modified Files: src/sys/kern [matt-nb5-mips64]: kern_xxx.c Log Message: Print out syscallname on ret too. To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.70.20.1 src/sys/kern/kern_xxx.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_xxx.c diff -u src/sys/kern/kern_xxx.c:1.70 src/sys/kern/kern_xxx.c:1.70.20.1 --- src/sys/kern/kern_xxx.c:1.70 Fri Apr 25 11:23:42 2008 +++ src/sys/kern/kern_xxx.c Sat Sep 12 16:53:50 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_xxx.c,v 1.70 2008/04/25 11:23:42 ad Exp $ */ +/* $NetBSD: kern_xxx.c,v 1.70.20.1 2009/09/12 16:53:50 matt Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_xxx.c,v 1.70 2008/04/25 11:23:42 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_xxx.c,v 1.70.20.1 2009/09/12 16:53:50 matt Exp $"); #include "opt_syscall_debug.h" @@ -178,8 +178,9 @@ ) printf("OUT OF RANGE (%ld)", (long)code); else - printf("%ld ret: err = %d, rv = 0x%lx,0x%lx", (long)code, - error, (long)retval[0], (long)retval[1]); + printf("%ld ret %s: err = %d, rv = 0x%lx,0x%lx", (long)code, + em->e_syscallnames[code], error, + (long)retval[0], (long)retval[1]); printf("\n"); } #endif /* SYSCALL_DEBUG */
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Wed Sep 2 17:50:25 UTC 2009 Modified Files: src/sys/kern [matt-nb5-mips64]: exec_elf32.c Log Message: If we have a ELF_MD_PROBE_FUNC, let it deal with ELF_INTERP_NON_RELOCATABLE. To generate a diff of this commit: cvs rdiff -u -r1.136.8.1 -r1.136.8.2 src/sys/kern/exec_elf32.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/exec_elf32.c diff -u src/sys/kern/exec_elf32.c:1.136.8.1 src/sys/kern/exec_elf32.c:1.136.8.2 --- src/sys/kern/exec_elf32.c:1.136.8.1 Fri Aug 21 18:00:36 2009 +++ src/sys/kern/exec_elf32.c Wed Sep 2 17:50:25 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf32.c,v 1.136.8.1 2009/08/21 18:00:36 matt Exp $ */ +/* $NetBSD: exec_elf32.c,v 1.136.8.2 2009/09/02 17:50:25 matt Exp $ */ /*- * Copyright (c) 1994, 2000, 2005 The NetBSD Foundation, Inc. @@ -57,7 +57,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: exec_elf32.c,v 1.136.8.1 2009/08/21 18:00:36 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exec_elf32.c,v 1.136.8.2 2009/09/02 17:50:25 matt Exp $"); /* If not included by exec_elf64.c, ELFSIZE won't be defined. */ #ifndef ELFSIZE @@ -916,8 +916,7 @@ #ifdef ELF_MD_PROBE_FUNC if ((error = ELF_MD_PROBE_FUNC(l, epp, eh, itp, pos)) != 0) return error; -#endif -#ifdef ELF_INTERP_NON_RELOCATABLE +#elif defined(ELF_INTERP_NON_RELOCATABLE) *pos = ELF_LINK_ADDR; #endif return 0;
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Sat Aug 22 00:22:41 UTC 2009 Modified Files: src/sys/kern [matt-nb5-mips64]: init_sysent.c Log Message: Regen for new 64 arg stuff To generate a diff of this commit: cvs rdiff -u -r1.229 -r1.229.8.1 src/sys/kern/init_sysent.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/init_sysent.c diff -u src/sys/kern/init_sysent.c:1.229 src/sys/kern/init_sysent.c:1.229.8.1 --- src/sys/kern/init_sysent.c:1.229 Thu Oct 16 20:12:23 2008 +++ src/sys/kern/init_sysent.c Sat Aug 22 00:22:40 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: init_sysent.c,v 1.229 2008/10/16 20:12:23 wrstuden Exp $ */ +/* $NetBSD: init_sysent.c,v 1.229.8.1 2009/08/22 00:22:40 matt Exp $ */ /* * System call switch table. @@ -8,7 +8,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.229 2008/10/16 20:12:23 wrstuden Exp $"); +__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.229.8.1 2009/08/22 00:22:40 matt Exp $"); #include "opt_nfsserver.h" #include "opt_ntp.h" @@ -489,9 +489,9 @@ #endif { 0, 0, 0, sys_nosys }, /* 172 = unimplemented */ - { ns(struct sys_pread_args), 0, + { ns(struct sys_pread_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64, (sy_call_t *)sys_pread }, /* 173 = pread */ - { ns(struct sys_pwrite_args), 0, + { ns(struct sys_pwrite_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64, (sy_call_t *)sys_pwrite }, /* 174 = pwrite */ { ns(struct compat_30_sys_ntp_gettime_args), 0, (sy_call_t *)compat_30(sys_ntp_gettime) },/* 175 = compat_30_ntp_gettime */ @@ -553,15 +553,15 @@ (sy_call_t *)sys_setrlimit }, /* 195 = setrlimit */ { ns(struct compat_12_sys_getdirentries_args), 0, (sy_call_t *)compat_12(sys_getdirentries) },/* 196 = compat_12_getdirentries */ - { ns(struct sys_mmap_args), 0, + { ns(struct sys_mmap_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG6_64, (sy_call_t *)sys_mmap }, /* 197 = mmap */ - { ns(struct sys___syscall_args), SYCALL_INDIRECT, + { ns(struct sys___syscall_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG0_64 | SYCALL_RET_64 | SYCALL_INDIRECT, (sy_call_t *)sys___syscall }, /* 198 = __syscall */ - { ns(struct sys_lseek_args), 0, + { ns(struct sys_lseek_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64 | SYCALL_RET_64, (sy_call_t *)sys_lseek }, /* 199 = lseek */ - { ns(struct sys_truncate_args), 0, + { ns(struct sys_truncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64, (sy_call_t *)sys_truncate }, /* 200 = truncate */ - { ns(struct sys_ftruncate_args), 0, + { ns(struct sys_ftruncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64, (sy_call_t *)sys_ftruncate }, /* 201 = ftruncate */ { ns(struct sys___sysctl_args), 0, (sy_call_t *)sys___sysctl }, /* 202 = __sysctl */ @@ -816,9 +816,9 @@ (sy_call_t *)sys___clone }, /* 287 = __clone */ { ns(struct sys_fktrace_args), 0, (sy_call_t *)sys_fktrace }, /* 288 = fktrace */ - { ns(struct sys_preadv_args), 0, + { ns(struct sys_preadv_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64, (sy_call_t *)sys_preadv }, /* 289 = preadv */ - { ns(struct sys_pwritev_args), 0, + { ns(struct sys_pwritev_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64, (sy_call_t *)sys_pwritev }, /* 290 = pwritev */ { ns(struct compat_16_sys___sigaction14_args), 0, (sy_call_t *)compat_16(sys___sigaction14) },/* 291 = compat_16___sigaction14 */ @@ -961,7 +961,7 @@ sys_nosys }, /* 352 = unimplemented */ { 0, 0, 0, sys_nosys }, /* 353 = unimplemented */ - { ns(struct sys_fsync_range_args), 0, + { ns(struct sys_fsync_range_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64, (sy_call_t *)sys_fsync_range }, /* 354 = fsync_range */ { ns(struct sys_uuidgen_args), 0, (sy_call_t *)sys_uuidgen }, /* 355 = uuidgen */ @@ -1085,7 +1085,7 @@ (sy_call_t *)sys_pset_assign }, /* 414 = pset_assign */ { ns(struct sys__pset_bind_args), 0, (sy_call_t *)sys__pset_bind }, /* 415 = _pset_bind */ - { ns(struct sys___posix_fadvise50_args), 0, + { ns(struct sys___posix_fadvise50_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64, (sy_call_t *)sys___posix_fadvise50 },/* 416 = __posix_fadvise50 */ { 0, 0, 0, sys_nosys }, /* 417 = filler */
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Sat Aug 22 00:12:23 UTC 2009 Modified Files: src/sys/kern [matt-nb5-mips64]: makesyscalls.sh Log Message: Add info about what arguments and return values are explicity 64bit (quad_t, off_t) and store that info in sy_flags. To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.73.8.1 src/sys/kern/makesyscalls.sh 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/makesyscalls.sh diff -u src/sys/kern/makesyscalls.sh:1.73 src/sys/kern/makesyscalls.sh:1.73.8.1 --- src/sys/kern/makesyscalls.sh:1.73 Mon Oct 13 18:16:33 2008 +++ src/sys/kern/makesyscalls.sh Sat Aug 22 00:12:23 2009 @@ -1,5 +1,5 @@ #! /bin/sh - -# $NetBSD: makesyscalls.sh,v 1.73 2008/10/13 18:16:33 pooka Exp $ +# $NetBSD: makesyscalls.sh,v 1.73.8.1 2009/08/22 00:12:23 matt Exp $ # # Copyright (c) 1994, 1996, 2000 Christopher G. Demetriou # All rights reserved. @@ -379,6 +379,12 @@ if (f == (end - 1)) { parserr($f, "function argument definition (maybe \"(\"?)"); } + if (returntype == "quad_t" || returntype == "off_t") { + if (sycall_flags == "0") + sycall_flags = "SYCALL_RET_64"; + else + sycall_flags = "SYCALL_RET_64 | " sycall_flags; + } funcname=$f if (funcalias == "") { @@ -412,6 +418,7 @@ # and do not need argument structures built. isvarargs = 0; + args64 = 0; while (f <= end) { if ($f == "...") { f++; @@ -438,9 +445,18 @@ } else { argalign++; } + if (argtype[argc] == "quad_t" || argtype[argc] == "off_t") { + if (sycall_flags == "0") +sycall_flags = "SYCALL_ARG"argc-1"_64"; + else +sycall_flags = "SYCALL_ARG"argc-1"_64 | " sycall_flags; + args64++; + } argname[argc]=$f; f += 2; # skip name, and any comma } + if (args64 > 0) + sycall_flags = "SYCALL_NARGS64_VAL("args64") | " sycall_flags; # must see another argument after varargs notice. if (isvarargs) { if (argc == varargc)
CVS commit: [matt-nb5-mips64] src/sys/kern
Module Name:src Committed By: matt Date: Fri Aug 21 18:00:36 UTC 2009 Modified Files: src/sys/kern [matt-nb5-mips64]: core_elf32.c exec_elf32.c Log Message: Add support for ELF_MD_PROBE_FUNC and ELF_COREDUMP_SETUP so that more exact checks can be made before committing to execute or better info about what's being dumped. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.32.16.1 src/sys/kern/core_elf32.c cvs rdiff -u -r1.136 -r1.136.8.1 src/sys/kern/exec_elf32.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/core_elf32.c diff -u src/sys/kern/core_elf32.c:1.32 src/sys/kern/core_elf32.c:1.32.16.1 --- src/sys/kern/core_elf32.c:1.32 Thu Apr 24 15:35:28 2008 +++ src/sys/kern/core_elf32.c Fri Aug 21 18:00:36 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: core_elf32.c,v 1.32 2008/04/24 15:35:28 ad Exp $ */ +/* $NetBSD: core_elf32.c,v 1.32.16.1 2009/08/21 18:00:36 matt Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -40,7 +40,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.32 2008/04/24 15:35:28 ad Exp $"); +__KERNEL_RCSID(1, "$NetBSD: core_elf32.c,v 1.32.16.1 2009/08/21 18:00:36 matt Exp $"); /* If not included by core_elf64.c, ELFSIZE won't be defined. */ #ifndef ELFSIZE @@ -157,6 +157,10 @@ ehdr.e_shnum = 0; ehdr.e_shstrndx = 0; +#ifdef ELF_MD_COREDUMP_SETUP + ELF_MD_COREDUMP_SETUP(l, &ehdr); +#endif + /* Write out the ELF header. */ error = coredump_write(cookie, UIO_SYSSPACE, &ehdr, sizeof(ehdr)); if (error) Index: src/sys/kern/exec_elf32.c diff -u src/sys/kern/exec_elf32.c:1.136 src/sys/kern/exec_elf32.c:1.136.8.1 --- src/sys/kern/exec_elf32.c:1.136 Mon Sep 15 18:12:56 2008 +++ src/sys/kern/exec_elf32.c Fri Aug 21 18:00:36 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf32.c,v 1.136 2008/09/15 18:12:56 rmind Exp $ */ +/* $NetBSD: exec_elf32.c,v 1.136.8.1 2009/08/21 18:00:36 matt Exp $ */ /*- * Copyright (c) 1994, 2000, 2005 The NetBSD Foundation, Inc. @@ -57,7 +57,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: exec_elf32.c,v 1.136 2008/09/15 18:12:56 rmind Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exec_elf32.c,v 1.136.8.1 2009/08/21 18:00:36 matt Exp $"); /* If not included by exec_elf64.c, ELFSIZE won't be defined. */ #ifndef ELFSIZE @@ -913,6 +913,10 @@ if ((error = netbsd_elf_signature(l, epp, eh)) != 0) return error; +#ifdef ELF_MD_PROBE_FUNC + if ((error = ELF_MD_PROBE_FUNC(l, epp, eh, itp, pos)) != 0) + return error; +#endif #ifdef ELF_INTERP_NON_RELOCATABLE *pos = ELF_LINK_ADDR; #endif