Module Name: src
Committed By: rmind
Date: Sat Jan 28 00:00:06 UTC 2012
Modified Files:
src/sys/kern: subr_pool.c vfs_bio.c
src/sys/ufs/ffs: ffs_vfsops.c
src/sys/uvm: uvm_init.c uvm_kmguard.c uvm_map.c uvm_pdpolicy_clock.c
uvm_swap.c
Log Message:
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const.
ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc.
sys_swapctl: move kmem_free outside the lock path.
uvm_init: fix comment, remove pointless numeration of steps.
uvm_map_enter: remove meflagval variable.
Fix some indentation.
To generate a diff of this commit:
cvs rdiff -u -r1.191 -r1.192 src/sys/kern/subr_pool.c
cvs rdiff -u -r1.234 -r1.235 src/sys/kern/vfs_bio.c
cvs rdiff -u -r1.273 -r1.274 src/sys/ufs/ffs/ffs_vfsops.c
cvs rdiff -u -r1.42 -r1.43 src/sys/uvm/uvm_init.c
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/uvm_kmguard.c
cvs rdiff -u -r1.311 -r1.312 src/sys/uvm/uvm_map.c
cvs rdiff -u -r1.15 -r1.16 src/sys/uvm/uvm_pdpolicy_clock.c
cvs rdiff -u -r1.159 -r1.160 src/sys/uvm/uvm_swap.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_pool.c
diff -u src/sys/kern/subr_pool.c:1.191 src/sys/kern/subr_pool.c:1.192
--- src/sys/kern/subr_pool.c:1.191 Fri Jan 27 19:48:40 2012
+++ src/sys/kern/subr_pool.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_pool.c,v 1.191 2012/01/27 19:48:40 para Exp $ */
+/* $NetBSD: subr_pool.c,v 1.192 2012/01/28 00:00:06 rmind Exp $ */
/*-
* Copyright (c) 1997, 1999, 2000, 2002, 2007, 2008, 2010
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.191 2012/01/27 19:48:40 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.192 2012/01/28 00:00:06 rmind Exp $");
#include "opt_ddb.h"
#include "opt_pool.h"
@@ -531,8 +531,8 @@ pr_rmpage(struct pool *pp, struct pool_i
void
pool_subsystem_init(void)
{
- int idx;
size_t size;
+ int idx;
mutex_init(&pool_head_lock, MUTEX_DEFAULT, IPL_NONE);
mutex_init(&pool_allocator_lock, MUTEX_DEFAULT, IPL_NONE);
@@ -2718,7 +2718,9 @@ void pool_page_free(struct pool *, void
#ifdef POOL_SUBPAGE
struct pool_allocator pool_allocator_kmem_fullpage = {
- pool_page_alloc, pool_page_free, 0
+ .pa_alloc = pool_page_alloc,
+ .pa_free = pool_page_free,
+ .pa_pagesz = 0
};
#else
struct pool_allocator pool_allocator_kmem = {
@@ -2733,7 +2735,9 @@ void pool_page_free_nointr(struct pool *
#ifdef POOL_SUBPAGE
struct pool_allocator pool_allocator_nointr_fullpage = {
- pool_page_alloc_nointr, pool_page_free_nointr, 0,
+ .pa_alloc = pool_page_alloc_nointr,
+ .pa_free = pool_page_free_nointr,
+ .pa_pagesz = 0
};
#else
struct pool_allocator pool_allocator_nointr = {
@@ -2755,7 +2759,9 @@ void *pool_subpage_alloc_nointr(struct p
void pool_subpage_free_nointr(struct pool *, void *);
struct pool_allocator pool_allocator_nointr = {
- pool_subpage_alloc, pool_subpage_free, POOL_SUBPAGE,
+ .pa_alloc = pool_subpage_alloc,
+ .pa_free = pool_subpage_free,
+ .pa_pagesz = POOL_SUBPAGE
};
#endif /* POOL_SUBPAGE */
@@ -2791,18 +2797,14 @@ pool_allocator_free(struct pool *pp, voi
void *
pool_page_alloc(struct pool *pp, int flags)
{
- bool waitok = (flags & PR_WAITOK) ? true : false;
- int rc;
+ const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
vmem_addr_t va;
+ int ret;
- rc = uvm_km_kmem_alloc(kmem_va_arena,
- pp->pr_alloc->pa_pagesz,
- ((waitok ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT), &va);
+ ret = uvm_km_kmem_alloc(kmem_va_arena, pp->pr_alloc->pa_pagesz,
+ vflags | VM_INSTANTFIT, &va);
- if (rc != 0)
- return NULL;
- else
- return (void *)va;
+ return ret ? NULL : (void *)va;
}
void
@@ -2815,25 +2817,21 @@ pool_page_free(struct pool *pp, void *v)
static void *
pool_page_alloc_meta(struct pool *pp, int flags)
{
- bool waitok = (flags & PR_WAITOK) ? true : false;
- int rc;
- vmem_addr_t addr;
+ const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
+ vmem_addr_t va;
+ int ret;
- rc = vmem_alloc(kmem_meta_arena, pp->pr_alloc->pa_pagesz,
- (waitok ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT, &addr);
+ ret = vmem_alloc(kmem_meta_arena, pp->pr_alloc->pa_pagesz,
+ vflags | VM_INSTANTFIT, &va);
- if (rc != 0)
- return 0;
- else
- return (void *)addr;
+ return ret ? NULL : (void *)va;
}
static void
pool_page_free_meta(struct pool *pp, void *v)
{
- vmem_free(kmem_meta_arena, (vmem_addr_t)v,
- pp->pr_alloc->pa_pagesz);
+ vmem_free(kmem_meta_arena, (vmem_addr_t)v, pp->pr_alloc->pa_pagesz);
}
#ifdef POOL_SUBPAGE
Index: src/sys/kern/vfs_bio.c
diff -u src/sys/kern/vfs_bio.c:1.234 src/sys/kern/vfs_bio.c:1.235
--- src/sys/kern/vfs_bio.c:1.234 Fri Jan 27 19:48:40 2012
+++ src/sys/kern/vfs_bio.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_bio.c,v 1.234 2012/01/27 19:48:40 para Exp $ */
+/* $NetBSD: vfs_bio.c,v 1.235 2012/01/28 00:00:06 rmind Exp $ */
/*-
* Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -123,7 +123,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.234 2012/01/27 19:48:40 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.235 2012/01/28 00:00:06 rmind Exp $");
#include "opt_bufcache.h"
@@ -231,17 +231,14 @@ static struct vm_map *buf_map;
static void *
bufpool_page_alloc(struct pool *pp, int flags)
{
- int rc;
+ const vm_flag_t vflags = (flags & PR_WAITOK) ? VM_SLEEP: VM_NOSLEEP;
vmem_addr_t va;
+ int ret;
- rc = uvm_km_kmem_alloc(kmem_va_arena, MAXBSIZE,
- ((flags & PR_WAITOK) ? VM_SLEEP : VM_NOSLEEP) | VM_INSTANTFIT,
- &va);
+ ret = uvm_km_kmem_alloc(kmem_va_arena, MAXBSIZE,
+ vflags | VM_INSTANTFIT, &va);
- if (rc != 0)
- return NULL;
- else
- return (void *)va;
+ return ret ? NULL : (void *)va;
}
static void
Index: src/sys/ufs/ffs/ffs_vfsops.c
diff -u src/sys/ufs/ffs/ffs_vfsops.c:1.273 src/sys/ufs/ffs/ffs_vfsops.c:1.274
--- src/sys/ufs/ffs/ffs_vfsops.c:1.273 Fri Jan 27 19:22:49 2012
+++ src/sys/ufs/ffs/ffs_vfsops.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $ */
+/* $NetBSD: ffs_vfsops.c,v 1.274 2012/01/28 00:00:06 rmind Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.274 2012/01/28 00:00:06 rmind Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ffs.h"
@@ -890,8 +890,7 @@ ffs_mountfs(struct vnode *devvp, struct
if (error)
return error;
- ump = kmem_alloc(sizeof(*ump), KM_SLEEP);
- memset(ump, 0, sizeof *ump);
+ ump = kmem_zalloc(sizeof(*ump), KM_SLEEP);
mutex_init(&ump->um_lock, MUTEX_DEFAULT, IPL_NONE);
error = ffs_snapshot_init(ump);
if (error)
Index: src/sys/uvm/uvm_init.c
diff -u src/sys/uvm/uvm_init.c:1.42 src/sys/uvm/uvm_init.c:1.43
--- src/sys/uvm/uvm_init.c:1.42 Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_init.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_init.c,v 1.42 2012/01/27 19:48:41 para Exp $ */
+/* $NetBSD: uvm_init.c,v 1.43 2012/01/28 00:00:06 rmind Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.42 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_init.c,v 1.43 2012/01/28 00:00:06 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -78,62 +78,59 @@ uvm_init(void)
vaddr_t kvm_start, kvm_end;
/*
- * step 0: ensure that the hardware set the page size
+ * Ensure that the hardware set the page size, zero the UVM structure.
*/
if (uvmexp.pagesize == 0) {
panic("uvm_init: page size not set");
}
- /*
- * step 1: zero the uvm structure
- */
-
memset(&uvm, 0, sizeof(uvm));
averunnable.fscale = FSCALE;
/*
- * step 2: init the page sub-system. this includes allocating the
- * vm_page structures, and setting up all the page queues (and
- * locks). available memory will be put in the "free" queue.
- * kvm_start and kvm_end will be set to the area of kernel virtual
- * memory which is available for general use.
+ * Init the page sub-system. This includes allocating the vm_page
+ * structures, and setting up all the page queues (and locks).
+ * Available memory will be put in the "free" queue, kvm_start and
+ * kvm_end will be set to the area of kernel virtual memory which
+ * is available for general use.
*/
uvm_page_init(&kvm_start, &kvm_end);
/*
- * step 3: init the map sub-system.
+ * Init the map sub-system.
*/
uvm_map_init();
/*
- * step 4: setup the kernel's virtual memory data structures. this
- * includes setting up the kernel_map/kernel_object.
- * Bootstrap all kernel memory allocators.
+ * Setup the kernel's virtual memory data structures. This includes
+ * setting up the kernel_map/kernel_object. Bootstrap all kernel
+ * memory allocators.
*/
uao_init();
uvm_km_bootstrap(kvm_start, kvm_end);
- /*
- * step 5: setup uvm_map pool_caches and init the amap.
+ /*
+ * Setup uvm_map caches and init the amap.
*/
uvm_map_init_caches();
uvm_amap_init();
/*
- * step 5: init the pmap module. the pmap module is free to allocate
+ * Init the pmap module. The pmap module is free to allocate
* memory for its private use (e.g. pvlists).
*/
pmap_init();
- /* step 6: init the kernel maps virtual address caches.
- * make kernel memory allocator ready for use.
- * After this call the pool/kmem memory allocators can be used.
+ /*
+ * Init the kernel maps virtual address caches. Make kernel memory
+ * allocator ready for use. After this call the pool/kmem memory
+ * allocators can be used.
*/
uvm_km_init();
@@ -143,7 +140,7 @@ uvm_init(void)
#endif
/*
- * step 6: init all pagers and the pager_map.
+ * Init all pagers and the pager_map.
*/
uvm_pager_init();
@@ -155,13 +152,13 @@ uvm_init(void)
uvm_loan_init();
/*
- * init emap subsystem.
+ * Init emap subsystem.
*/
uvm_emap_sysinit();
/*
- * the VM system is now up! now that kmem is up we can resize the
+ * The VM system is now up! Now that kmem is up we can resize the
* <obj,off> => <page> hash table for general use and enable paging
* of kernel objects.
*/
@@ -172,7 +169,7 @@ uvm_init(void)
uvmpdpol_reinit();
/*
- * init anonymous memory systems
+ * Init anonymous memory systems.
*/
uvm_anon_init();
@@ -180,7 +177,7 @@ uvm_init(void)
uvm_uarea_init();
/*
- * init readahead module
+ * Init readahead mechanism.
*/
uvm_ra_init();
Index: src/sys/uvm/uvm_kmguard.c
diff -u src/sys/uvm/uvm_kmguard.c:1.6 src/sys/uvm/uvm_kmguard.c:1.7
--- src/sys/uvm/uvm_kmguard.c:1.6 Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_kmguard.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_kmguard.c,v 1.6 2012/01/27 19:48:41 para Exp $ */
+/* $NetBSD: uvm_kmguard.c,v 1.7 2012/01/28 00:00:06 rmind Exp $ */
/*-
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
* - Use-after-free
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_kmguard.c,v 1.6 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_kmguard.c,v 1.7 2012/01/28 00:00:06 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -121,15 +121,14 @@ uvm_kmguard_alloc(struct uvm_kmguard *kg
va = vm_map_min(kg->kg_map);
if (__predict_false(uvm_map(kg->kg_map, &va, PAGE_SIZE*2, NULL,
UVM_UNKNOWN_OFFSET, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_ALL,
- UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, flag))
- != 0)) {
+ UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, flag)) != 0)) {
return NULL;
}
/*
* allocate a single page and map in at the start of the two page
* block.
- */
+ */
for (;;) {
pg = uvm_pagealloc(NULL, va - vm_map_min(kg->kg_map), NULL, 0);
Index: src/sys/uvm/uvm_map.c
diff -u src/sys/uvm/uvm_map.c:1.311 src/sys/uvm/uvm_map.c:1.312
--- src/sys/uvm/uvm_map.c:1.311 Fri Jan 27 19:48:41 2012
+++ src/sys/uvm/uvm_map.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_map.c,v 1.311 2012/01/27 19:48:41 para Exp $ */
+/* $NetBSD: uvm_map.c,v 1.312 2012/01/28 00:00:06 rmind Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_map.c,v 1.311 2012/01/27 19:48:41 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_map.c,v 1.312 2012/01/28 00:00:06 rmind Exp $");
#include "opt_ddb.h"
#include "opt_uvmhist.h"
@@ -919,7 +919,7 @@ uvm_map_init(void)
*/
void
uvm_map_init_caches(void)
-{
+{
/*
* initialize caches.
*/
@@ -1266,7 +1266,6 @@ uvm_map_enter(struct vm_map *map, const
const int amapwaitflag = (flags & UVM_FLAG_NOWAIT) ?
AMAP_EXTEND_NOWAIT : 0;
const int advice = UVM_ADVICE(flags);
- const int meflagval = 0;
vaddr_t start = args->uma_start;
vsize_t size = args->uma_size;
@@ -1310,7 +1309,7 @@ uvm_map_enter(struct vm_map *map, const
if (prev_entry->end == start &&
prev_entry != &map->header &&
- UVM_ET_ISCOMPATIBLE(prev_entry, newetype, uobj, meflagval,
+ UVM_ET_ISCOMPATIBLE(prev_entry, newetype, uobj, 0,
prot, maxprot, inherit, advice, 0)) {
if (uobj && prev_entry->offset +
@@ -1367,7 +1366,7 @@ uvm_map_enter(struct vm_map *map, const
forwardmerge:
if (prev_entry->next->start == (start + size) &&
prev_entry->next != &map->header &&
- UVM_ET_ISCOMPATIBLE(prev_entry->next, newetype, uobj, meflagval,
+ UVM_ET_ISCOMPATIBLE(prev_entry->next, newetype, uobj, 0,
prot, maxprot, inherit, advice, 0)) {
if (uobj && prev_entry->next->offset != uoffset + size)
Index: src/sys/uvm/uvm_pdpolicy_clock.c
diff -u src/sys/uvm/uvm_pdpolicy_clock.c:1.15 src/sys/uvm/uvm_pdpolicy_clock.c:1.16
--- src/sys/uvm/uvm_pdpolicy_clock.c:1.15 Fri Jan 27 19:48:42 2012
+++ src/sys/uvm/uvm_pdpolicy_clock.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $ */
+/* $NetBSD: uvm_pdpolicy_clock.c,v 1.16 2012/01/28 00:00:06 rmind Exp $ */
/* NetBSD: uvm_pdaemon.c,v 1.72 2006/01/05 10:47:33 yamt Exp $ */
/*
@@ -69,7 +69,7 @@
#else /* defined(PDSIM) */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.16 2012/01/28 00:00:06 rmind Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -419,10 +419,9 @@ uvmpdpol_reinit(void)
bool
uvmpdpol_needsscan_p(void)
{
- vmem_size_t kva_size;
- vmem_size_t kva_free;
+ vmem_size_t kva_size, kva_free;
- kva_size = vmem_size(kmem_arena, VMEM_FREE|VMEM_ALLOC);
+ kva_size = vmem_size(kmem_arena, VMEM_FREE | VMEM_ALLOC);
kva_free = vmem_size(kmem_arena, VMEM_FREE);
if (kva_free < (kva_size / 10)) {
@@ -432,7 +431,7 @@ uvmpdpol_needsscan_p(void)
if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
return true;
}
- if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
+ if (pdpol_state.s_inactive < pdpol_state.s_inactarg) {
return true;
}
return false;
Index: src/sys/uvm/uvm_swap.c
diff -u src/sys/uvm/uvm_swap.c:1.159 src/sys/uvm/uvm_swap.c:1.160
--- src/sys/uvm/uvm_swap.c:1.159 Fri Jan 27 19:48:42 2012
+++ src/sys/uvm/uvm_swap.c Sat Jan 28 00:00:06 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_swap.c,v 1.159 2012/01/27 19:48:42 para Exp $ */
+/* $NetBSD: uvm_swap.c,v 1.160 2012/01/28 00:00:06 rmind Exp $ */
/*
* Copyright (c) 1995, 1996, 1997, 2009 Matthew R. Green
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.159 2012/01/27 19:48:42 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.160 2012/01/28 00:00:06 rmind Exp $");
#include "opt_uvmhist.h"
#include "opt_compat_netbsd.h"
@@ -638,9 +638,8 @@ sys_swapctl(struct lwp *l, const struct
*/
priority = SCARG(uap, misc);
- sdp = kmem_alloc(sizeof(*sdp), KM_SLEEP);
+ sdp = kmem_zalloc(sizeof(*sdp), KM_SLEEP);
spp = kmem_alloc(sizeof(*spp), KM_SLEEP);
- memset(sdp, 0, sizeof(*sdp));
sdp->swd_flags = SWF_FAKE;
sdp->swd_vp = vp;
sdp->swd_dev = (vp->v_type == VBLK) ? vp->v_rdev : NODEV;
@@ -713,10 +712,9 @@ sys_swapctl(struct lwp *l, const struct
* done! release the ref gained by namei() and unlock.
*/
vput(vp);
-
out:
- kmem_free(userpath, SWAP_PATH_MAX);
rw_exit(&swap_syscall_lock);
+ kmem_free(userpath, SWAP_PATH_MAX);
UVMHIST_LOG(pdhist, "<- done! error=%d", error, 0, 0, 0);
return (error);