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


  • 相关阅读:
    [产品设计]我对移动互联网产品的观点
    [Android阅读代码]圆形旋转菜单CircleMenu
    [Android代码阅读]分类简介
    [Android学习笔记]Android调试
    [Android]ADT Run时候报错:The connection to adb is down, and a severe error has occured
    [Android学习笔记]使用ListView
    [Android]Button按下后修改背景图
    [.NET Framework学习笔记]一些概念
    ubuntu fcitx 安装 使用
    nyoj-626-intersection set
  • 原文地址:https://www.cnblogs.com/int32bit/p/3187802.html
Copyright © 2011-2022 走看看