|
|
|
|||||
|
|
作者 Ray RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray 16.4: 函数 API16.4.1 : PARTITION_CREATE- 创建一个内存区函数原型: rtems_status_code rtems_partition_create( rtems_name name, void *starting_address, rtems_unsigned32 length, rtems_unsigned32 buffer_size, rtems_attribute attribute_set, rtems_id *id );
返回值代表的状态 : RTEMS_SUCCESSFUL- 成功创建分区 RTEMS_INVALID_NAME- 无效分区名字 RTEMS_TOO_MANY- 已经创建太多分区 RTEMS_INVALID_ADDRESS- 地址不是 32 位对齐方式 RTEMS_INVALID_ADDRESS- starting_address 是空值 RTEMS_INVALID_ADDRESS- id 是空值 RTEMS_INVALID_SIZE- 内存区长度尺寸是 0 RTEMS_INVALID_SIZE- 定长内存区大小比内存块小 RTEMS_INVALID_SIZE- 内存区大小不是 4 的整数倍 RTEMS_MP_NOT_CONFIGURED- 未配置多重处理 ( 针对全局内存区 ) RTEMS_TOO_MANY- 太多全局对象
描述 : 该函数创建一个从 starting_address 开始的连续定长内存区 , 定长内存区大小为 length , 里面每个内存块大小为 buffer_size 。id返回了定长内存区的id。函数中RTEMS 为定长内存区分配 PTCB并且将其初始化。
注意: starting_address 和 buffer_size 参数一定要是是四的整数倍。 定长内存区没有被 RTEMS 用来储存定长内存区控制区段。 全局定长内存区的 PTCB 在本地结点分配。全局定长内存区必须在共享内存中创建。为了减少开销,除非是远端任务发出请求,全局的定长内存区仍然被当作本地内存区处理。当一个全局定长内存区建立时,分区的名字和ID标识将存放到全局对象表格中并会传送到每个结点上。 全局对象的总数,包括分区,被配置表格中 maximum_global_objects字段限制。
16.4.2 : PARTITION_IDENT-获取定长内存区的 ID标识函数原型: rtems_status_code rtems_partition_ident( rtems_name name, rtems_unsigned32 node, rtems_id *id );
返回值代表的状态 : RTEMS_SUCCESSFUL- 成功地获取 ID RTEMS_INVALID_ADDRESS- ID 标识是空值 RTEMS_INVALID_NAME- 没找到对应名字 RTEMS_INVALID_NODE- 无效的结点 ID 标识
描述 : 该函数按照名称搜索内存分区 ID 标识。 如果分区名字不唯一,将会返回第一个找到的符合条件定长内存区ID。
注意: 如果node是 RTEMS_SEARCH_ALL_NODES,将搜索所有的节点,次序是先本地,然后按照节点编号搜索。 如果结点不是本地的,将会搜索对应远端节点的全局内存器导出信息。函数将会在本地的全局信息表中查找相关信息。
16.4.3 : PARTITION_DELETE- 删除一个定长内存区函数原型 : rtems_status_code rtems_partition_delete( rtems_id id );
返回值代表的状态 : RTEMS_SUCCESSFUL- 分区成功地被删除 RTEMS_INVALID_ID- 无效分区 ID 标识 RTEMS_RESOURCE_IN_USE- 区内内存块正在被使用 RTEMS_ILLEGAL_ON_REMOTE_OBJECT- 不能删除远端定长内存区
描述 : 该函数删除 ID 标识指定的分区。 如果分区内有内存块正在被使用 , 那么无法删除定长内存区 , 函数返回 RTEMS_RESOURCE_IN_USE 。删除后PTCB将被回收。
注意: 调用者不必是创建者,只要是知道分区ID标识的本地任务就可以进行删除。
当一个全局分区被删除时,分区的ID标识将会广播到每个节点。 内存分区驻留在本地节点上,即使分区使用 RTEMS_GLOBAL选项创建。
16.4.4 : PARTITION_GET_BUFFER-从一个定长内存区获取内存块函数原型: rtems_status_code rtems_partition_get_buffer( rtems_id id, void **buffer );
返回值代表的状态 : RTEMS_SUCCESSFUL- 成功地获得内存 RTEMS_INVALID_ADDRESS- 内存是空 RTEMS_INVALID_ID- 无效分区 ID 标识 RTEMS_UNSATISFIED- 所有的内存都被分配
描述 : 该函数从 ID 标识指定的内存区获得内存块。使用buffer存放返回值。
注意: 所有的内存必须按照4字节的方式对齐。 任务不会因为获取内存而等待。 如果需要从远程节点获取全局的内存,该函数将会对远程节点发出对应请求。
16.4.5 : PARTITION_RETURN_BUFFER-将内存块释放回内存区函数原型: rtems_status_code rtems_partition_return_buffer( rtems_id id, void *buffer );
返回值代表的状态: RTEMS_SUCCESSFUL- 成功地释放内存 RTEMS_INVALID_ADDRESS- 内存是空 RTEMS_INVALID_ID- 无效分区 ID标识 RTEMS_INVALID_ADDRESS - 所有内存块不是来自于该内存区
描述: 该函数将内存块释放回ID标识指定的定长内存区。
注意: 如果需要对远端节点内存进行操作,该函数将会对远程节点发出对应请求。
|
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
嵌入式软硬件设计咨询 8位
16位 32位 64位 RISC DSP |
||||||||||||||||
| 2004 RTEMS.NET 版权所有 |
||||||||||||||||