鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

kupl_hbw_verify

判断内存空间从地址addr开始到addr+size为止是否全部在OPM内。

接口定义

int kupl_hbw_verify(void *addr, size_t size, int flags);

参数

表1 参数定义

参数名

类型

描述

输入/输出

addr

void*

需要判断的内存的起始地址

输入

size

size_t

需要判断的内存的内存大小

输入

flags

int

额外的flag信息,可能会影响函数行为,当前可以设置为HBW_TOUCH_PAGES或为空

输入

HBW_TOUCH_PAGES:表示在验证前会按照操作系统的分页,依次读写所需验证内存空间中的每一页。这项操作会强制操作系统为验证的地址实际分配内存空间并建立页的映射。

返回值

  • 若整块内存都在OPM中,返回KUPL_IS_HBW_MEMORY。
  • 若给定的内存空间中有不属于OPM的部分则返回KUPL_IS_NOT_HBW_MEMORY。
  • 若处理过程中出错返回KUPL_HBW_VERIFY_ERROR。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <stdio.h> 
#include <stdlib.h>
#include <assert.h>
#include "kupl.h" 
   
int main() 
{ 
    int len = 1024; 
    char *data = (char *)kupl_hbw_malloc(len);

    if(data != nullptr) {
        int ret = kupl_hbw_verify(data, 1024, HBW_TOUCH_PAGES);
        assert(ret ==  KUPL_IS_HBW_MEMORY);
        kupl_hbw_free(data);
    } 
    return 0; 
}
  • 上述示例演示了申请OPM内存并验证申请的内存是否全部在OPM上的流程。
  • 上述kupl_hbw_verify验证的指针的起始地址为kupl_hbw_malloc申请得到的地址的起始地址,验证的大小也与申请大小保持一致。
  • 在设置了HBW_TOUCH_PAGES后,kupl_hbw_verify会在验证前会按照操作系统的分页,依次读写所需验证内存空间中的每一页。