2632
- 收藏
- 点赞
- 分享
- 举报
虚拟地址和物理地址对应存放。
各位大神,我现在通过HI_MPI_SYS_MmzAlloc_Cached获得物理地址和虚拟地址,现在要把虚拟地址和物理地址存放在数组中,方便为了HI_MPI_SYS_MmzFree去根据虚拟地址来查询相对应的物理地址释放内存,应该怎么写啊,(就是my_malloc和my_free代替malloc和free)
[code]void *my_malloc(size_t size)
{
int s32Ret = 0;
HI_U32 u32PhyAddr=0;
HI_U32* pu32VirAddr = NULL;
int array[] = {0};
// 记录物理地址和虚拟地址;
s32Ret = HI_MPI_SYS_MmzAlloc_Cached(&u32PhyAddr, (void**)(&pu32VirAddr),NULL, NULL, size);
if(s32Ret != HI_SUCCESS)
{
printf("can't alloc ao buffer ! s32Ret = %x, %d, %p\n",s32Ret,u32PhyAddr, pu32VirAddr);
return -1;
}
//array[] =
printf("jw_mpi_osd_malloc success! s32Ret = %x, %x, %p, size: %d\n",s32Ret,u32PhyAddr, pu32VirAddr, size );
return pu32VirAddr;
}
int my_free(void *ptr)
{
int s32Ret = 0;
HI_U32 u32PhyAddr=0;
// 搜索虚拟地址对应的物理地址;
s32Ret = HI_MPI_SYS_MmzFree(, ptr);
if(HI_SUCCESS != s32Ret)
{
printf("mmz free failed with %x\n", s32Ret);
return s32Ret;
}
printf("jw_mpi_osd_free success! s32Ret = %x, %x, %p\n",s32Ret, , ptr);
return ptr;
}[/code]
代码结构如上,现在就是要my_malloc()存储虚拟地址和物理地址,然后my_free()根据对应的虚拟地址查询相应的物理地址来释放内存。
[code]void *my_malloc(size_t size)
{
int s32Ret = 0;
HI_U32 u32PhyAddr=0;
HI_U32* pu32VirAddr = NULL;
int array[] = {0};
// 记录物理地址和虚拟地址;
s32Ret = HI_MPI_SYS_MmzAlloc_Cached(&u32PhyAddr, (void**)(&pu32VirAddr),NULL, NULL, size);
if(s32Ret != HI_SUCCESS)
{
printf("can't alloc ao buffer ! s32Ret = %x, %d, %p\n",s32Ret,u32PhyAddr, pu32VirAddr);
return -1;
}
//array[] =
printf("jw_mpi_osd_malloc success! s32Ret = %x, %x, %p, size: %d\n",s32Ret,u32PhyAddr, pu32VirAddr, size );
return pu32VirAddr;
}
int my_free(void *ptr)
{
int s32Ret = 0;
HI_U32 u32PhyAddr=0;
// 搜索虚拟地址对应的物理地址;
s32Ret = HI_MPI_SYS_MmzFree(, ptr);
if(HI_SUCCESS != s32Ret)
{
printf("mmz free failed with %x\n", s32Ret);
return s32Ret;
}
printf("jw_mpi_osd_free success! s32Ret = %x, %x, %p\n",s32Ret, , ptr);
return ptr;
}[/code]
代码结构如上,现在就是要my_malloc()存储虚拟地址和物理地址,然后my_free()根据对应的虚拟地址查询相应的物理地址来释放内存。
我来回答
回答7个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2015-12-12 00:09:58
-
2019-10-11 10:04:22
-
02017-06-23 11:47:07
-
2018-05-05 17:44:06
-
2020-05-13 15:53:17
-
2012-12-04 14:18:16
-
2017-02-04 11:49:38
-
2009-03-17 08:39:23
-
2012-12-05 14:22:51
-
2012-12-05 14:28:56
-
2012-12-05 10:57:05
-
2017-07-29 11:16:58
-
2019-07-22 10:45:02
-
2012-12-05 14:37:44
-
2013-08-20 14:53:23
-
2016-10-10 23:31:33
-
2016-11-08 13:43:18
-
2012-12-05 14:34:00
-
2019-12-25 12:14:01
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
20帮忙交叉编译个源码
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认