alloc_mem.c

来源:互联网 发布:360防火墙怎么设置网络 编辑:程序博客网 时间:2024/06/14 07:17

 

#include<linux/module.h>
#include<linux/init.h>
#include<linux/slab.h>
#include<linux/vmalloc.h>
#include<linux/mm.h>

MODULE_LICENSE("GPL");

unsigned long pagemem;
unsigned long pagesmem;
unsigned char *kmallocmem;
unsigned char *vmallocmem;

static int __init alloc_init(void)
{
    pagemem=__get_free_page(GFP_KERNEL);
    printk("<1>get_free_page:pagemem=0x%lx \n",pagemem);
    pagesmem=__get_free_pages(GFP_KERNEL,3);//2的3次方个物理页面
    printk("<1>get_free_pages:pagesmem=0x%lx \n",pagesmem);

    kmallocmem=(unsigned char *)kmalloc(100,GFP_KERNEL);
    memset(kmallocmem,0,100);//内存清0
    strcpy(kmallocmem,"Kmalloc mem ok!");
    printk("<1>kmalloc:kmallocmem addr=%p\n",kmallocmem);
    printk("<1>kmalloc:kmallocmem value %s \n",kmallocmem);
   
    vmallocmem=(unsigned char *)vmalloc(1000000);
    printk("<1>vmalloc:vmallocmem addr=%p\n",vmallocmem);
    return 0;

}
static void __exit alloc_exit(void)
{
    free_page(pagemem);
    free_pages(pagesmem,3);
    kfree(kmallocmem);
    vfree(vmallocmem);
}
module_init(alloc_init);
module_exit(alloc_exit);

0 0
原创粉丝点击