分区内存:实用服务和数据结构
查看 RTOS Revealed 系列
本文继续看 RTOS 分区内存。
分区池实用服务
Nucleus RTOS 具有三个 API 调用,它们提供与分区池相关的实用功能:返回有关分区池的信息、返回应用程序中的分区池数量以及返回指向应用程序中所有分区池的指针。前两个是在 Nucleus SE 中实现的。
获取分区池信息
此服务调用获取有关分区池的信息选择。 Nucleus SE 实现与 Nucleus RTOS 的不同之处在于它返回的信息较少,因为不支持对象命名和挂起顺序,并且可能无法启用任务挂起。
Nucleus RTOS API 调用分区池信息
服务调用原型:
<块引用>
STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL *pool, CHAR *name, VOID **start_address, UNSIGNED *pool_size, UNSIGNED *partition_size, UNSIGNED *available, UNSIGNED *allocated, OPTION *suspend_type, UNSIGNED *tasks_SKing,
参数:
<块引用>池 – 指向正在请求信息的分区池的指针
姓名 – 指向分区池名称的 8 个字符目标区域的指针;这包括空终止符的空间。
起始地址 – 指向变量的指针,该变量将接收指向分区池数据区起始位置的指针
池大小 – 一个指向变量的指针,它将接收分区池的大小(以字节为单位)
分区大小 – 一个指向变量的指针,它将接收这个池中分区的大小
可用 – 一个指向变量的指针,该变量将接收该池中当前可用的分区数
已分配 – 指向变量的指针,该变量将接收此池中当前正在使用的分区数
暂停类型 – 指向保存任务挂起类型的变量的指针;有效的任务挂起类型为 NU_FIFO 和 NU_PRIORITY .
tasks_waiting – 一个指向一个变量的指针,该变量将接收在这个分区池上挂起的任务数
first_task – 一个指向任务指针的指针,其中放置了第一个挂起任务的指针
退货:
<块引用>NU_SUCCESS – 通话成功
NU_INVALID_POOL – 分区池指针无效
Nucleus SE API 调用分区池信息
此 API 调用支持 Nucleus RTOS API 的关键功能。
服务调用原型:
<块引用>STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool, ADDR *start_address, U32 *pool_size, U16 *partition_size, U8 *available, U8 *allocated, U8 *tasks_waiting, NUSE_TASK *first_task)
参数:
<块引用>池 – 正在请求信息的分区池的索引
起始地址 – 指向变量的指针,该变量将接收指向分区池数据区起始位置的指针
池大小 – 一个指向变量的指针,它将接收分区池的大小(以字节为单位)
分区大小 – 一个指向变量的指针,它将接收这个池中分区的大小
可用 – 一个指向变量的指针,该变量将接收该池中当前可用的分区数
已分配 – 指向变量的指针,该变量将接收此池中当前正在使用的分区数
tasks_waiting – 一个指向一个变量的指针,该变量将接收在这个分区池上挂起的任务数(如果任务挂起被禁用,则不返回任何内容)
first_task – 指向 NUSE_TASK 类型变量的指针 它将接收第一个挂起任务的索引(如果禁用了任务挂起,则不返回任何内容)
退货:
<块引用>NUSE_SUCCESS – 通话成功
NUSE_INVALID_POOL – 分区池索引无效
NUSE_INVALID_POINTER – 一个或多个指针参数无效
Nucleus SE 实现分区池信息
这个 API 调用的实现非常简单:
该函数返回分区池状态。然后,如果启用阻塞API调用,则返回等待任务的数量和第一个的索引(否则这两个参数设置为0)。
获取分区池数量
此服务调用返回应用程序中配置的分区池数。虽然在 Nucleus RTOS 中,这会随时间变化,返回值将代表当前池的数量,但在 Nucleus SE 中,返回值在构建时设置,不能更改。
Nucleus RTOS API 调用分区池数量
此 API 调用支持 Nucleus RTOS API 的关键功能。
服务调用原型:
<块引用>未签名的 NU_Established_Partition_Pools(VOID);
参数:
<块引用>无
退货:
<块引用>应用中创建的分区池数量
Nucleus SE API 调用分区池数量
此 API 调用支持 Nucleus RTOS API 的关键功能。
服务调用原型:
<块引用>U8 NUSE_Partition_Pool_Count(void);
参数:
<块引用>无
退货:
<块引用>应用中配置的分区池数量
实施
这个 API 调用的实现几乎非常简单:#define 的值 符号 NUSE_PARTITION_POOL_NUMBER 被退回。
嵌入式