Files

101 lines
3.2 KiB
C

/*
* Copyright (c) XMEDIA. All rights reserved.
*/
#ifndef XMEDIA_MMZ_H
#define XMEDIA_MMZ_H
#include "xmedia_type.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* 函数功能:申请 MMZ 内存
* 函数参数:
* mmz_name - 输入参数,申请的内存内存池名
* buf_name - 输入参数,申请的内存命名
* size - 输入参数,申请的内存大小
* 返回值:
* 0 - 函数执行失败,返回空
* others - 函数执行成功,返回申请内存的物理地址
*/
xmedia_u64 xmedia_mmz_alloc(const xmedia_char *mmz_name, const xmedia_char *buf_name, xmedia_u32 size);
/*
* 函数功能:释放 MMZ 内存
* 函数参数:
* phy_addr - 输入参数,待释放的MMZ内存物理地址
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* others - 函数执行失败,返回错误码
*/
xmedia_s32 xmedia_mmz_free(xmedia_u64 phy_addr);
/*
* 函数功能:映射内存
* 函数参数:
* phy_addr - 输入参数,待映射内存对应的物理地址
* size - 输入参数,待映射内存的大小
* cached - 输入参数,映射时是否带cache
* 返回值:
* XMEDIA_NULL - 函数执行失败,返回空指针
* others - 函数执行成功过,返回映射后的虚拟地址
*/
xmedia_void* xmedia_mmz_map(xmedia_u64 phy_addr, xmedia_u32 size, xmedia_bool cached);
/*
* 函数功能:解除映射
* 函数参数:
* virt_addr - 输入参数,待解除映射内存对应的虚拟地址
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* others - 函数执行失败,返回错误码
*/
xmedia_s32 xmedia_mmz_unmap(void *virt_addr);
/*
* 函数功能:刷新 cache 里的内容到MMZ内存并且使 cache 里的内容无效
* 函数参数:
* phy_addr - 输入参数,待刷新cache对应的内存物理地址
* virt_addr - 输入参数,待刷新cache对应的内存虚拟地址
* size - 输入参数,待刷新cache区域大小
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* others - 函数执行失败,返回错误码
*/
xmedia_s32 xmedia_mmz_flush_cache(xmedia_u64 phy_addr, xmedia_void *virt_addr, xmedia_u32 size);
/*
* 函数功能:将用户空间mmz的虚拟地址转换成对应的物理地址
* 函数参数:
* pphy_addr - 输入参数,输出的mmz内存物理地址保存在此指针中
* virt_addr - 输入参数,mmz的内存虚拟地址
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* others - 函数执行失败,返回错误码
*/
xmedia_s32 xmedia_mmz_virt_to_phy(xmedia_void *virt_addr, xmedia_u64 *pphy_addr);
/*
* 函数功能:获取用户空间mmz map时是否cached
* 函数参数:
* pcached - 输入参数,输出的mmz内存是否cached保存在此指针中
* virt_addr - 输入参数,mmz的内存虚拟地址
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* others - 函数执行失败,返回错误码
*/
xmedia_s32 xmedia_mmz_is_cached(xmedia_void *virt_addr, xmedia_bool *pcached);
xmedia_void xmedia_mmz_init(xmedia_void);
xmedia_void xmedia_mmz_exit(xmedia_void);
#ifdef __cplusplus
}
#endif
#endif