version 1.3, 1998/07/23 20:34:00 |
version 1.4.2.1, 1998/07/30 14:04:05 |
Line 321 pool_init(pp, size, align, ioff, flags, |
|
Line 321 pool_init(pp, size, align, ioff, flags, |
|
if (!powerof2(pagesz) || pagesz > PAGE_SIZE) |
if (!powerof2(pagesz) || pagesz > PAGE_SIZE) |
panic("pool_init: page size invalid (%lx)\n", (u_long)pagesz); |
panic("pool_init: page size invalid (%lx)\n", (u_long)pagesz); |
|
|
if (alloc == NULL) |
if (alloc == NULL && release == NULL) { |
alloc = pool_page_alloc; |
alloc = pool_page_alloc; |
|
|
if (release == NULL) |
|
release = pool_page_free; |
release = pool_page_free; |
|
pagesz = PAGE_SIZE; /* Rounds to PAGE_SIZE anyhow. */ |
|
} else if ((alloc != NULL && release != NULL) == 0) { |
|
/* If you specifiy one, must specify both. */ |
|
panic("pool_init: must specify alloc and release together"); |
|
} |
|
|
if (pagesz == 0) |
if (pagesz == 0) |
pagesz = PAGE_SIZE; |
pagesz = PAGE_SIZE; |
|
|
Line 805 pool_page_alloc(sz, flags, mtype) |
|
Line 808 pool_page_alloc(sz, flags, mtype) |
|
int flags; |
int flags; |
int mtype; |
int mtype; |
{ |
{ |
vm_offset_t va; |
|
|
|
#if defined(UVM) |
#if defined(UVM) |
va = uvm_km_kmemalloc(kernel_map, uvm.kernel_object, |
return ((void *)uvm_km_alloc_poolpage()); |
(vm_size_t)sz, UVM_KMF_NOWAIT); |
#else |
#else |
return ((void *)kmem_alloc_poolpage()); |
va = kmem_malloc(kmem_map, (vm_size_t)sz, 0); |
#endif |
#endif |
|
return ((void *)va); |
|
} |
} |
|
|
static void |
static void |
Line 824 pool_page_free(v, sz, mtype) |
|
Line 824 pool_page_free(v, sz, mtype) |
|
{ |
{ |
|
|
#if defined(UVM) |
#if defined(UVM) |
uvm_km_free(kernel_map, (vm_offset_t)v, sz); |
uvm_km_free_poolpage((vaddr_t)v); |
#else |
#else |
kmem_free(kmem_map, (vm_offset_t)v, sz); |
kmem_free_poolpage((vaddr_t)v); |
#endif |
#endif |
} |
} |
|
|