Module Name: src Committed By: matt Date: Wed Nov 28 22:59:09 UTC 2012
Modified Files: src/sys/kern [matt-nb6-plus]: kern_kthread.c src/sys/uvm [matt-nb6-plus]: uvm_extern.h uvm_glue.c Log Message: Pull from HEAD: Add a __HAVE_CPU_UAREA_IDLELWP hook so that the MD code can allocate special UAREAs for idle lwp's. To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.38.10.1 src/sys/kern/kern_kthread.c cvs rdiff -u -r1.181.2.1 -r1.181.2.1.2.1 src/sys/uvm/uvm_extern.h cvs rdiff -u -r1.156.2.3 -r1.156.2.3.2.1 src/sys/uvm/uvm_glue.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_kthread.c diff -u src/sys/kern/kern_kthread.c:1.38 src/sys/kern/kern_kthread.c:1.38.10.1 --- src/sys/kern/kern_kthread.c:1.38 Tue Nov 1 15:39:37 2011 +++ src/sys/kern/kern_kthread.c Wed Nov 28 22:59:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_kthread.c,v 1.38 2011/11/01 15:39:37 jym Exp $ */ +/* $NetBSD: kern_kthread.c,v 1.38.10.1 2012/11/28 22:59:09 matt Exp $ */ /*- * Copyright (c) 1998, 1999, 2007, 2009 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_kthread.c,v 1.38 2011/11/01 15:39:37 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_kthread.c,v 1.38.10.1 2012/11/28 22:59:09 matt Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -70,7 +70,8 @@ kthread_create(pri_t pri, int flag, stru KASSERT((flag & KTHREAD_INTR) == 0 || (flag & KTHREAD_MPSAFE) != 0); - uaddr = uvm_uarea_system_alloc(); + uaddr = uvm_uarea_system_alloc( + (flag & (KTHREAD_INTR|KTHREAD_IDLE)) == KTHREAD_IDLE ? ci : NULL); if (uaddr == 0) { return ENOMEM; } Index: src/sys/uvm/uvm_extern.h diff -u src/sys/uvm/uvm_extern.h:1.181.2.1 src/sys/uvm/uvm_extern.h:1.181.2.1.2.1 --- src/sys/uvm/uvm_extern.h:1.181.2.1 Thu Apr 12 17:05:37 2012 +++ src/sys/uvm/uvm_extern.h Wed Nov 28 22:59:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_extern.h,v 1.181.2.1 2012/04/12 17:05:37 riz Exp $ */ +/* $NetBSD: uvm_extern.h,v 1.181.2.1.2.1 2012/11/28 22:59:09 matt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -611,7 +611,7 @@ bool uvm_kernacc(void *, size_t, vm_pr __dead void uvm_scheduler(void); vaddr_t uvm_uarea_alloc(void); void uvm_uarea_free(vaddr_t); -vaddr_t uvm_uarea_system_alloc(void); +vaddr_t uvm_uarea_system_alloc(struct cpu_info *); void uvm_uarea_system_free(vaddr_t); vaddr_t uvm_lwp_getuarea(lwp_t *); void uvm_lwp_setuarea(lwp_t *, vaddr_t); Index: src/sys/uvm/uvm_glue.c diff -u src/sys/uvm/uvm_glue.c:1.156.2.3 src/sys/uvm/uvm_glue.c:1.156.2.3.2.1 --- src/sys/uvm/uvm_glue.c:1.156.2.3 Thu Apr 12 17:05:37 2012 +++ src/sys/uvm/uvm_glue.c Wed Nov 28 22:59:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_glue.c,v 1.156.2.3 2012/04/12 17:05:37 riz Exp $ */ +/* $NetBSD: uvm_glue.c,v 1.156.2.3.2.1 2012/11/28 22:59:09 matt Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_glue.c,v 1.156.2.3 2012/04/12 17:05:37 riz Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_glue.c,v 1.156.2.3.2.1 2012/11/28 22:59:09 matt Exp $"); #include "opt_kgdb.h" #include "opt_kstack.h" @@ -366,8 +366,12 @@ uvm_uarea_alloc(void) } vaddr_t -uvm_uarea_system_alloc(void) +uvm_uarea_system_alloc(struct cpu_info *ci) { +#ifdef __HAVE_CPU_UAREA_ALLOC_IDLELWP + if (__predict_false(ci != NULL)) + return cpu_uarea_alloc_idlelwp(ci); +#endif return (vaddr_t)pool_cache_get(uvm_uarea_system_cache, PR_WAITOK); }