Subject: Re: kernel mem
To: David Ferlier <david@netbsd-fr.org>
From: Jaromir Dolecek <jdolecek@netbsd.org>
List: tech-kern
Date: 01/09/2003 23:13:08
Normally you use malloc(9) or pool(9) routines. Of course, disadvantage
of malloc(9) is that it allocates memory from interrupt-safe kernel
memory pool, which has certain fixed upper size.
You don't need to play directly with vm_space structures when
you use uvm_km_zalloc(). The returned vaddr_t can be directly
used for your data within kernel. If the memory is accessed
from process context always, you might consider using
uvm_km_valloc{_wait}(), which IIRC doesn't wire the memory
and demand-fills the virtual address range with physical pages.
Hopefuly this helps a little,
Jaromir
David Ferlier wrote:
> Hi,
>
> I am writing a piece of code (a filesystem), and i need to alloc kernel memory of
> a dynamic size for bitmap cache stuff.
>
> For the moment, i alloc'ed all that with uvm_km_zalloc, and then i read the
> vm_space structure, and do a loop over all the vm_map_entry structures it contains.
>
> I didn't test the code, but i'd like to know which of the uvm api or malloc(9) api (with
> a special type specific to the filesystem) to choose (before going further)
>
> Thanks in advance.
>
> --
>
> David Ferlier - david@netbsd-fr.org ||
> dferlier@BonBon.net
>
> www.NetBSD.org - Of Course It Runs NetBSD
>
--
Jaromir Dolecek <jdolecek@NetBSD.org> http://www.NetBSD.org/
-=- We should be mindful of the potential goal, but as the tantric -=-
-=- Buddhist masters say, ``You may notice during meditation that you -=-
-=- sometimes levitate or glow. Do not let this distract you.'' -=-