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


  • 相关阅读:
    JS leetcode 买卖股票的最佳时机 题解分析,我离职了。
    JS leetcode x 的平方根 题解分析
    JS leetcode 有多少小于当前数字的数字 解题分析,你应该了解的桶排序
    JS leetcode 合并两个有序数组 解题分析
    JavaSE部分 (多线程下)
    JavaSE部分 (多线程上)
    JavaSE部分 (异常)
    JavaSE部分 集合下(Map)
    JavaSE部分 集合中(数据结构 list set Collections)
    JavaSE (接口 final 内部类)
  • 原文地址:https://www.cnblogs.com/int32bit/p/3187802.html
Copyright © 2011-2022 走看看