Hi , On Wed, Apr 18, 2012 at 12:44 AM, 夏业添 <summerxyt@xxxxxxxxx> 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 _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies