April 18, 2012
7:44 a.m.
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!