虚拟地址和物理地址的存储与提取
各位大神,我现在通过HI_MPI_SYS_MmzAlloc_Cached获得物理地址和虚拟地址,现在要把虚拟地址和物理地址存放在数组中,方便为了HI_MPI_SYS_MmzFree去根据虚拟地址来查询相对应的物理地址释放内存,应该怎么写啊,(就是my_malloc和my_free代替malloc和free)
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;
}
复制代码
代码结构如上,现在就是要my_malloc()存储虚拟地址和物理地址,然后my_free()根据对应的虚拟地址查询相应的物理地址来释放内存。
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;
}
复制代码
代码结构如上,现在就是要my_malloc()存储虚拟地址和物理地址,然后my_free()根据对应的虚拟地址查询相应的物理地址来释放内存。
...全文
相关推荐
Linux内核分析与应用课件第2章-动手实践-把虚拟地址转换为物理地址.pdf
Linux内核分析与应用课件
模拟请求页式存储管理中硬件的地址转换和缺页中断
模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断;
模拟页式虚拟地址和缺页中断算法实验报告
处理缺页中断时使用LRU算法进行 实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所作工作进程测试。
模拟系统请求分页式存储管理
操作系统课程设计:模拟系统请求分页式存储管理,其中设计内存分配及地址映射算法,还有多线程协调更新主界面等内容……
实验四页式虚拟存储管理中地址转换和页式中断FIFOLRUOPTC++版本.doc
实验四页式虚拟存储管理中地址转换和页式中断FIFOLRUOPTC++版本.doc


