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


  • 相关阅读:
    容器环境的JVM内存设置最佳实践
    K8S基于ingress-nginx实现灰度发布
    基于ambassador实现K8S灰度发布
    Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里
    springboot之jackson的两种配置方式
    CentOS7清理磁盘空间
    主机磁盘满了,却查不到大文件占用
    【数据库-MySql】开启事件 event_scheduler
    Jenkins自动化构建vue项目然后发布到远程服务器
    CentOS 7 使用NVM管理nodejs
  • 原文地址:https://www.cnblogs.com/int32bit/p/3187802.html
Copyright © 2011-2022 走看看