how to use the memory allocated in kernel?
Dave Hylands
dhylands at gmail.com
Wed Apr 18 04:17:13 EDT 2012
Hi ,
On Wed, Apr 18, 2012 at 12:44 AM, 夏业添 <summerxyt at gmail.com> wrote:
> Hi everyone,
>
> there are some functions can alloc memory in kernel, but it seems that I
> cannot use it directly. Here is my code:
>
> static int mytest_vm(){
>
> struct vm_struct *v_start;
>
> v_start=alloc_vm_area(PAGE_SIZE,NULL); //the kernel api has changed,
> I don't understand why there is a second parameter
> if(v_start==NULL){
> printk("cannot alloc page\n");
> return -1;
> }
>
> sprintf((char *)v_start->addr,"this is a test.\n");
> printk("after sprintk:%s",(char *)v_start->addr);
>
> free_vm_area(v_start);
>
> return 0;
> }
> module_init(mytest_vm);
>
> but it just got a kernel Oops. Can anyone explain this to me? Thanks very
> much!
If my understanding of things is correct, this just allocates virtual
space. That virtual space isn't backed by any physical pages.
The normal kernel allocators are things like kmalloc and vmalloc.
--
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com
More information about the Kernelnewbies
mailing list