|
|
|
|||||
|
|
作者 Ray RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray 9.7.5: TASK_DELETE- 删除一个任务函数原型: rtems_status_code rtems_task_delete(
返回值代表的状态: RTEMS_SUCCESSFUL- 任务成功地被删除 RTEMS_INVALID_ID- 任务ID标识无效 RTEMS_ILLEGAL_ON_REMOTE_OBJECT- 不能够删除远端节点上的任务 描述: 该指令删除一个ID标识指定的任务,被删除的任务可以是调用者自身,也可以是另外的任务。RTEMS 停止该任务并且回收分配给任务的栈空间、和任务相关的额时间延迟或计时器、 TCB。此外,如果任务是 RTEMS_FLOATING_POINT,还要删除它的浮点山下文区域。RTEMS不会回收下列的资源: 区域段,分区缓冲器,信号量,计时器, 单调周期。(未涉及的相关概念可以参考后面的说明) 注意: 一个任务应该自己将负它的资源释放并在被删除前返回给RTEMS。为了确保资源的回收,除非任务已经无法运行运行,或者不拥有任何的RTEMS资源,否则任务是不应该被删除的。如果一个任务占用了RTEMS资源,任务应该先 释放它占用的资源然后再删除。在RTEMS中,较好的编程风格通过消息机制,向要被删除的任务发送消息、事件、信号,让任务释放它的资源然后删除他自身,此外,也可以调用重新开始指令,并且附加一个特别的参数让任务重新启动,然后释放自己占用的资源。 如果删除的任务是正在执行的任务 (也就是调用者自身RTEMS_SELF),那么删除将会迫使RTEMS选择另外的一个任务运行。 当一个全局任务被删除,任务的ID标识将会传送到系统中的每个节点,让这些节点删除全局对象表格中对应的字段。 要删除的任务必须是在本地运行,即使任务使用了RTEMS_GLOBAL选项创建。 9.7.6: TASK_SUSPEND-挂起一个任务 函数原型: rtems_status_code rtems_task_suspend( 返回值代表的状态: RTEMS_SUCCESSFUL- 任务成功地挂起 RTEMS_INVALID_ID- 任务ID标识无效 RTEMS_ALREADY_SUSPENDED- 任务已经处于挂起态 描述: 该函数中止ID标识的任务近一步执行,把该任务放在挂起状态。挂起状态和阻塞态不同,处在挂起状态的任务除非接收到rtems_task_resume函数,否则该任务不会参予任务调度。 注意: 任务能通过向rtems_task_suspend函数传递RTEMS_SELF来挂起它本身。在这种情况,任务将会被挂起,而且只有等到任务被重新开始的时候,这个函数才回返回RTEMS_SUCCESSFUL。 挂起一个不在本地结点上的全局任务将会对远端结点产生一个请求,要求挂起指定的任务。 如果被ID标识指定的任务已经被挂起,那么函数执行的返回码将会是RTEMS_ALREADY_SUSPENDED。 |
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
嵌入式软硬件设计咨询 8位
16位 32位 64位 RISC DSP |
||||||||||||||||
| 2004 RTEMS.NET 版权所有 |
||||||||||||||||