Thread (6 messages) 6 messages, 4 authors, 2012-04-18

how to use the memory allocated in kernel?

From: Dave Hylands <hidden>
Date: 2012-04-18 08:17:13

Hi ,

On Wed, Apr 18, 2012 at 12:44 AM, ??? [off-list ref] 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help