首页 > 其他分享 >hugepage 示例代码

hugepage 示例代码

时间:2023-10-31 20:34:05浏览次数:34  
标签:MAP return 示例 代码 hugepages LENGTH hugepage fd addr2

#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <stdio.h>

#define MAP_LENGTH (500*1024*1024) // 10MB

int main()
{
    int fd;
    void * addr;

    // 1. 创建一个 Hugetlb 文件系统的文件
    fd1 = open("/dev/hugepages/hugepage1", O_CREAT|O_RDWR);
    if (fd < 0) {
        perror("open()");
        return -1;
    }

    // 2. 把虚拟内存映射到 Hugetlb 文件系统的文件中
    addr1 = mmap(0, MAP_LENGTH, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    if (addr == MAP_FAILED) {
        perror("mmap()");
        close(fd);
        unlink("/mnt/huge/hugepage1");
        return -1;
    }
    memset(addr1, 0, MAP_LENGTH);


    fd2 = open("/dev/hugepages/hugepage2", O_CREAT|O_RDWR);
    if (fd2 < 0) {
        perror("open()");
        return -1;
    }

    // 2. 把虚拟内存映射到 Hugetlb 文件系统的文件中
    addr2 = mmap(0, MAP_LENGTH, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    if (addr2 == MAP_FAILED) {
        perror("mmap()");
        close(fd2);
        unlink("/mnt/huge/hugepage2");
        return -1;
    }
    memset(addr2, 0, MAP_LENGTH);


    strcpy(addr, "This is HugePages example...");
    printf("%s\n", addr);

   sleep(100);

    // 3. 使用完成后,解除映射关系
    munmap(addr1, MAP_LENGTH);
    munmap(addr2, MAP_LENGTH);
    close(fd1);
    close(fd2);
    unlink("/dev/hugepages/hugepage1");
    unlink("/dev/hugepages/hugepage2");
    return 0;
 }

 

标签:MAP,return,示例,代码,hugepages,LENGTH,hugepage,fd,addr2
From: https://www.cnblogs.com/tzj-kernel/p/17801263.html

相关文章

  • 使用Postman快速复现浏览器的请求(包括生成调用代码)
    前言大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。好久没有写开发类的工具使用文了,这次我来讲下平时我是如何使用Postman工具的。一、工具准备软件下载链接:https://www.postman.c......
  • c# 通过代码调用WPS将Word转为PDF
    最近在使用Spire.Doc的过程中,发现在将word文件转为PDF时,一旦页数过多(具体超过多少页会报错暂未求证),会直接报错(Objectreferencenotsettoaninstanceofanobject.),堆栈信息如下:当然,我这是免费版的,功能被阉割很正常,所以这两天一直在寻找替代品。中间了解到可以使用微软官方......
  • SonarQube安装及分析.NET 5.0代码
    SonarQube安装及分析.NET5.0代码一、写在前面在日常逛园子的时候发现了SonarQube这个代码质量管理平台,感觉挺有意思的所以决定自己捣鼓一下,使用方法大多来源网上本文章只是记录一下使用过程。二、下载安装1.官网下载地址:https://www.sonarsource.com/products/sonarqube/dow......
  • 无代码:让编程不再有门槛
    随着数字化时代的到来,一种全新的开发方式正在崛起,它就是无代码开发。通过简单的拖拽和配置,无代码平台-kepler能让没有编程经验的人,快速构建出功能强大的应用程序,从而改变了传统软件开发的模式。Kepler无代码是一种可视化编程工具,让用户通过拖拽组件和配置参数等方式,快速构建应用程......
  • 双十一限时优惠!沃通SSL证书、代码签名证书年度好价
    2023年11月01日至11月11日,沃通2023“双十一限时特惠”活动,精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价,部分SSL证书产品低至5折,更有EV代码签名证书爆款特惠!多种数字证书一站式采购,解决政企用户网站HTTPS加密、软件代码签名等应用需求。欢迎访问沃通CA官网了解详情。......
  • app直播源代码,Flutter 宽高自适应
    app直播源代码,Flutter宽高自适应工具类代码如下: import'dart:ui';classHYSizeFit{ staticdoublescreenWidth=0.0; staticdoublescreenHeight=0.0; staticdoublephysicalWidth=0.0; staticdoublephysicalHeight=0.0; staticdoubledpr=0.0; ......
  • 量化交易之One Piece篇 - spdlog - 示例demo
    #include<memory>#include<onepiece/datacore/DataCore.h>#include<spdlog/spdlog.h>#include<spdlog/sinks/basic_file_sink.h>#include<memory>usingnamespacestd;intmain(intargc,constchar*argv[]){//testsp......
  • java实现文件夹上传功能实例代码(SpringBoot框架)
    前言有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下一、前端如何设置上传组件并将资源上传到后台服务这里的项目框架为若依VUE版本......
  • 继续更新完善:C++ 结构体代码转MASM32代码
    一、需求分析在用MASM32编程更新完善SysInfo的网络连接信息,用到了MIB_TCP6TABLE_OWNER_MODULE结构体:typedefstruct_MIB_TCP6TABLE_OWNER_MODULE{DWORDdwNumEntries;MIB_TCP6ROW_OWNER_MODULEtable[ANY_SIZE];}MIB_TCP6TABLE_OWNER_MODULE,*PMIB_T......
  • 代码战场:用Python射击游戏开启程序员的创造之旅
    目录前言代码演示总结前言大家好,我是辣条哥!昨天在家点开好久没打开的游戏菜单,突然看到好久没有玩过的某F,玩了几把发现时代是真的变了!于是今天辣条有感而发写了这么一个简陋的射击类小游戏在这个项目中,我们将使用Python编写一个射击类游戏。这个游戏不仅具有高难度,还可以进行......