B_QuRT_User_Guide(34)
- 21.22 qurt_mem_pool_attr_get_size()
- 21.23 qurt_mem_pool_create()
- 21.24 qurt_mem_pool_remove_pages()
- 21.25 qurt_mem_region_attr_get()
- 21.26 qurt_mem_region_attr_get_bus_attr()
- 21.27 qurt_mem_region_attr_get_cache_mode()
- 21.28 qurt_mem_region_attr_get_mapping()
- 21.29 qurt_mem_region_attr_get_physaddr()
- 21.30 qurt_mem_region_attr_get_size()
- 21.31 qurt_mem_region_attr_get_type()
- 21.32 qurt_mem_region_attr_get_virtaddr()
- 21.33 qurt_mem_region_attr_get_physaddr_64()
- 21.34 qurt_mem_region_attr_init()
21.22 qurt_mem_pool_attr_get_size()
21.22.1 功能文档
21.22.1.1 static int qurt_mem_pool_attr_get_size ( qurt_mem_pool_attr_t ∗ attr, int range_id, qurt_size_t ∗ size )
获取指定内存池范围的大小。
相关数据类型
qurt_mem_pool_attr_t
qurt_size_t
参数
in | attr | 指向内存池属性结构的指针。 |
in | range_id | 内存池范围键。 |
out | size | 指向范围大小的目标变量的指针。 |
返回值
0 – 成功。
QURT_EINVALID – 范围无效。
依赖项
None.
21.23 qurt_mem_pool_create()
21.23.1 功能文档
21.23.1.1 int qurt_mem_pool_create ( char ∗ name, unsigned base, unsigned size,qurt_mem_pool_t ∗ pool )
从物理地址范围动态创建内存池对象。
该池被分配一个具有指定基地址和大小的内存区域。
传递给此函数的基地址和大小值必须与 4K 字节边界对齐,并且必须表示为实际基地址和大小值除以 4K。
例如函数调用:
qurt_mem_pool_create ("TCM_PHYSPOOL", 0xd8020, 0x20, &pool)
… 相当于 QuRT 系统配置文件中的以下静态池定义:
<physical_pool name="TCM_PHYSPOOL">
<region base="0xd8020000" size="0x20000" />
</physical_pool>
注意:动态创建的池与静态池不同。 特别是,qurt_mem_pool_attr_get() 对动态创建的池无效。
动态池创建会永久消耗系统资源,并且无法撤消。
相关数据类型
qurt_mem_pool_t
参数
in | name | 指向内存池名称的指针。 |
in | base | 内存区域的基地址(除以 4K)。 |
in | size | 内存区域的大小(以字节为单位)(除以 4K)。 |
out | pool | 指向内存池对象的指针。 |
返回值
QURT_EOK – 成功。
依赖项
None.
21.24 qurt_mem_pool_remove_pages()
21.24.1 功能文档
21.24.1.1 int qurt_mem_pool_remove_pages ( qurt_mem_pool_t pool, unsigned first_pageno, unsigned size_in_pages, unsigned flags, void(∗)(void ∗) callback, void ∗ arg )
从指定的内存池对象中删除物理地址范围。
如果地址范围的任何部分正在使用,则此操作将返回错误而不更改状态。
注意:仅使用 root 权限调用此操作(guest-OS 模式)。
将来,此操作将支持(通过 flags 参数)在使用部分范围时删除物理地址范围。
相关数据类型
qurt_mem_pool_t
参数
in | pool | 内存池对象。 |
in | first_pageno | 物理地址范围的第一个页码(相当于地址>>12) |
in | size_in_pages | 物理地址范围内的页数(相当于大小>>12) |
in | flags | 删除选项。 返回值: 0 – 跳过不属于池的范围内的漏洞(默认) |
QURT_POOL_REMOVE_ALL_OR_NONE – 仅当指定的物理地址范围完全包含在池可用空间中(没有空洞)时才会删除页面。 | ||
in | callback | 成功删除页面时调用的回调过程。 如果操作失败,则不调用。 将 0 作为参数值传递会导致不调用回调。 |
in | arg | 作为参数传递给回调过程的值。 |
返回值
QURT_EOK – 页已成功删除。
依赖项
None.
21.25 qurt_mem_region_attr_get()
21.25.1 功能文档
21.25.1.1 int qurt_mem_region_attr_get ( qurt_mem_region_t region, qurt_mem_region_attr_t ∗ attr )
获取指定消息区域的内存属性。 内存区域创建后,其属性无法更改。
相关数据类型
qurt_mem_region_t
qurt_mem_region_attr_t
参数
in | region | 内存区域对象。 |
out | attr | 指向内存区域属性的目标结构的指针。 |
返回值
QURT_EOK – 操作成功执行。
错误代码 - 失败。
依赖项
None.
21.26 qurt_mem_region_attr_get_bus_attr()
21.26.1 功能文档
21.26.1.1 static void qurt_mem_region_attr_get_bus_attr ( qurt_mem_region_attr_t ∗attr, unsigned ∗ pbits )
从指定的内存区域属性结构中获取 (A1, A0) 总线属性位。
相关数据类型
qurt_mem_region_attr_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | pbits | 指向用内存区域属性结构中的 (A1, A0) 位填充的无符号整数的指针,表示为 2 位二进制数。 |
返回值
None.
依赖项
None.
21.27 qurt_mem_region_attr_get_cache_mode()
21.27.1 功能文档
21.27.1.1 static void qurt_mem_region_attr_get_cache_mode ( qurt_mem_region_attr_t ∗ attr, qurt_mem_cache_mode_t ∗ mode )
从指定的内存区域属性结构中获取缓存操作模式。
相关数据类型
qurt_mem_region_attr_t
qurt_mem_cache_mode_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | mode | 指向缓存模式的目标变量的指针。 |
返回值
None.
依赖项
None.
21.28 qurt_mem_region_attr_get_mapping()
21.28.1 功能文档
21.28.1.1 static void qurt_mem_region_attr_get_mapping ( qurt_mem_region_attr_t ∗ attr, qurt_mem_mapping_t ∗ mapping )
从指定的内存区域属性结构中获取内存映射。
相关数据类型
qurt_mem_region_attr_t
qurt_mem_mapping_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | mapping | 指向内存映射的目标变量的指针。 |
返回值
None.
依赖项
None.
21.29 qurt_mem_region_attr_get_physaddr()
21.29.1 功能文档
21.28.1.1 static void qurt_mem_region_attr_get_mapping ( qurt_mem_region_attr_t ∗ attr, qurt_mem_mapping_t ∗ mapping )
从指定的内存区域属性结构中获取内存映射。
相关数据类型
qurt_mem_region_attr_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | addr | 指向内存区域物理地址的目标变量的指针。 |
返回值
None.
依赖项
None.
21.30 qurt_mem_region_attr_get_size()
21.30.1 功能文档
21.30.1.1 static void qurt_mem_region_attr_get_size ( qurt_mem_region_attr_t ∗ attr,qurt_size_t ∗ size )
从指定的内存区域属性结构中获取内存区域大小。
相关数据类型
qurt_mem_region_attr_t
qurt_size_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | size | 指向内存区域大小的目标变量的指针。 |
返回值
None.
依赖项
None.
21.31 qurt_mem_region_attr_get_type()
21.31.1 功能文档
21.31.1.1 static void qurt_mem_region_attr_get_type ( qurt_mem_region_attr_t ∗ attr,qurt_mem_region_type_t ∗ type )
从指定的内存区域属性结构中获取内存类型。
相关数据类型
qurt_mem_region_attr_t
qurt_mem_region_type_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | type | 指向内存类型的目标变量的指针。 |
返回值
None.
依赖项
None.
21.32 qurt_mem_region_attr_get_virtaddr()
21.32.1 功能文档
21.32.1.1 static void qurt_mem_region_attr_get_virtaddr ( qurt_mem_region_attr_t ∗attr, unsigned int ∗ addr )
从指定的内存区域属性结构中获取内存区域虚拟地址。
相关数据类型
qurt_mem_region_attr_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | addr | 指向内存区域虚拟地址的目标变量的指针。 |
返回值
None.
依赖项
None.
21.33 qurt_mem_region_attr_get_physaddr_64()
21.33.1 功能文档
21.33.1.1 static void qurt_mem_region_attr_get_physaddr_64 ( qurt_mem_region_attr_t ∗ attr, qurt_paddr_64_t ∗ addr_64 )
从指定的内存区域属性结构中获取内存区域的 64 位物理地址。
相关数据类型
qurt_mem_region_attr_t
qurt_paddr_64_t
参数
in | attr | 指向内存区域属性结构的指针。 |
out | addr_64 | 指向内存区域 64 位物理地址的目标变量的指针。 |
返回值
None.
依赖项
None.
21.34 qurt_mem_region_attr_init()
21.34.1 功能文档
21.34.1.1 void qurt_mem_region_attr_init ( qurt_mem_region_attr_t ∗ attr )
使用默认属性值初始化指定的内存区域属性结构:
- 映射 – QURT_MEM_MAPPING_VIRTUAL
- 缓存模式——QURT_MEM_CACHE_WRITEBACK
- 物理地址 – -1
- 虚拟地址 – -1
- 内存类型 – QURT_MEM_REGION_LOCAL
- 大小 – -1
注意:必须通过调用 qurt_mem_region_attr_set_physaddr() 函数显式设置内存物理地址属性。 大小和池属性直接设置为内存区域创建操作中的参数。
相关数据类型
qurt_mem_region_attr_t
参数
in,out | attr | 指向内存区域属性的目标结构的指针。 |
返回值
None.
依赖项
None.