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);