Use the pool allocator and the "nointr" pool page allocator for dynamically
allocated vm_map_entry's.
This commit is contained in:
parent
99626224a7
commit
be8d09cda3
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: uvm_map.c,v 1.25 1998/08/31 00:20:26 thorpej Exp $ */
|
/* $NetBSD: uvm_map.c,v 1.26 1998/08/31 01:10:15 thorpej Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXXCDC: "ROUGH DRAFT" QUALITY UVM PRE-RELEASE FILE!
|
* XXXCDC: "ROUGH DRAFT" QUALITY UVM PRE-RELEASE FILE!
|
||||||
@ -110,6 +110,11 @@ struct uvm_cnt uvm_mlk_call, uvm_mlk_hint;
|
|||||||
|
|
||||||
struct pool uvm_vmspace_pool;
|
struct pool uvm_vmspace_pool;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pool for dynamically-allocated map entries.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct pool uvm_map_entry_pool;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* macros
|
* macros
|
||||||
@ -194,8 +199,7 @@ uvm_mapent_alloc(map)
|
|||||||
UVMHIST_CALLED(maphist);
|
UVMHIST_CALLED(maphist);
|
||||||
|
|
||||||
if (map->entries_pageable) {
|
if (map->entries_pageable) {
|
||||||
MALLOC(me, vm_map_entry_t, sizeof(struct vm_map_entry),
|
me = pool_get(&uvm_map_entry_pool, PR_WAITOK);
|
||||||
M_VMMAPENT, M_WAITOK);
|
|
||||||
me->flags = 0;
|
me->flags = 0;
|
||||||
/* me can't be null, wait ok */
|
/* me can't be null, wait ok */
|
||||||
|
|
||||||
@ -233,7 +237,7 @@ uvm_mapent_free(me)
|
|||||||
UVMHIST_LOG(maphist,"<- freeing map entry=0x%x [flags=%d]",
|
UVMHIST_LOG(maphist,"<- freeing map entry=0x%x [flags=%d]",
|
||||||
me, me->flags, 0, 0);
|
me, me->flags, 0, 0);
|
||||||
if ((me->flags & UVM_MAP_STATIC) == 0) {
|
if ((me->flags & UVM_MAP_STATIC) == 0) {
|
||||||
FREE(me, M_VMMAPENT);
|
pool_put(&uvm_map_entry_pool, me);
|
||||||
} else {
|
} else {
|
||||||
s = splimp(); /* protect kentry_free list with splimp */
|
s = splimp(); /* protect kentry_free list with splimp */
|
||||||
simple_lock(&uvm.kentry_lock);
|
simple_lock(&uvm.kentry_lock);
|
||||||
@ -322,6 +326,9 @@ uvm_map_init()
|
|||||||
pool_init(&uvm_vmspace_pool, sizeof(struct vmspace),
|
pool_init(&uvm_vmspace_pool, sizeof(struct vmspace),
|
||||||
0, 0, 0, "vmsppl", 0,
|
0, 0, 0, "vmsppl", 0,
|
||||||
pool_page_alloc_nointr, pool_page_free_nointr, M_VMMAP);
|
pool_page_alloc_nointr, pool_page_free_nointr, M_VMMAP);
|
||||||
|
pool_init(&uvm_map_entry_pool, sizeof(struct vm_map_entry),
|
||||||
|
0, 0, 0, "vmmpepl", 0,
|
||||||
|
pool_page_alloc_nointr, pool_page_free_nointr, M_VMMAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user