zoukankan      html  css  js  c++  java
  • linux 内核动态内存分配测试(纯属娱乐哈)

    #include<linux/init.h>
    #include<linux/module.h>
    #include<linux/kernel.h>
    #include<linux/vmalloc.h>
    #include<linux/slab.h>
    
    
    void kmalloc_test(void)
    {
    char * buff;
    printk("----------------------------\n");
    printk("kmalloc test...\n");
    buff=(char *)kmalloc(1024,GFP_KERNEL);
    if(buff)
    {
    sprintf(buff,"test memory\n");
    printk(buff);
    kfree(buff);
    }
    else
    {
    printk("kmalloc failed!\n");
    printk("----------------------------\n");
    return ;
    }
    
    
    buff=kmalloc(32*PAGE_SIZE,GFP_KERNEL);
    if(buff)
    {
    printk("Big memory ok\n");
    kfree(buff);
    }
    else
    {
    printk("Big memory molloc failed!\n");
    printk("----------------------------\n");
    return ;
    }
    printk("----------------------------\n");
    return ;
    }
    void vmalloc_test(void)
    {
    char * buff;
    printk("----------------------------\n");
    printk("vmalloc test...\n");
    buff=vmalloc(32*PAGE_SIZE);
    if(buff)
    {
    sprintf(buff,"vmalloc test ok \n");
    printk(buff);
    vfree(buff);
    }
    else
    {
    printk("vmalloc failed!\n");
    printk("----------------------------\n");
    return ;
    }
    printk("----------------------------\n");
    return ;
    }
    void get_free_pages_test(void)
    {
    char * buff;
    int order;
    printk("get_free_pages test...\n");
    order=get_order(8192*10);
    buff=__get_free_pages(GFP_KERNEL,order);
    if(buff)
    {
    sprintf(buff,"__get_free_pages test ok [%d]\n",order);
    printk(buff);
    free_pages(buff,order);
    }
    else
    {
    printk("__get_free_pages failed !\n");
    printk("----------------------------\n");
    return ;
    }
    printk("----------------------------\n");
    return ;
    }
    int memtest_init(void)
    {
    printk("Module Memory Test\n");
    printk("The PAGE_SIZE=%d\n",PAGE_SIZE);
    kmalloc_test();
    vmalloc_test();
    get_free_pages_test();
    return 0;
    }
    void memtest_exit(void)
    {
    printk("Module Memory Test End\n");
    }
    module_init(memtest_init);
    module_exit(memtest_exit);
    MODULE_LICENSE("Dual BSD/GPL");


  • 相关阅读:
    go系列之数组
    node.js 下依赖Express 实现post 4种方式提交参数
    javascript的数据类型
    工作中常用的mysql操作
    Linux如何查看进程、杀死进程、启动进程等常用命令
    局域网两台笔记本如何使用svn
    固定电话的验证
    phpexcel来做表格导出(多个工作sheet)
    char.js专门用来做数据统计图
    Out of resources when opening file 错误解决
  • 原文地址:https://www.cnblogs.com/int32bit/p/3187802.html
Copyright © 2011-2022 走看看