|
|
|
|||||
|
|
作者 Ray RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray 9.7.1: TASK_CREATE- 创建一个任务函数原型: rtems_status_code rtems_task_create(
函数状态码: RTEMS_SUCCESSFUL- 任务成功地创建 RTEMS_INVALID_ADDRESS- id 是空值 RTEMS_INVALID_NAME- 任务名字无效 RTEMS_INVALID_PRIORITY- 任务优先级无效 RTEMS_MP_NOT_CONFIGURED- 多任务处理没有启动 RTEMS_TOO_MANY- 创建任务数超过系统限制 RTEMS_UNSATISFIED- 没有足够内存存放栈以及任务上下文 RTEMS_TOO_MANY- 全局变量数目超过了系统限制 描述 : 该函数在本地结点上创建新任务。函数分配并初始化TCB;任务栈;以及可选的浮点上下文区域。 模式参数决定了任务的执行模式。如果新任务使用了协处理器,就应该使用RTEMS_FLOATING_POINT 分量初始化任务的属性。出于性能方面的考虑,一般不推荐任务使用数值协处理器,也就是说应该使用RTEMS_NO_FLOATING_POINT属性。 如果任务属性中包含RTEMS_GLOBAL分量,任务能从远端结点存取。任务ID参数用于函数返回的时候获取新任务的ID。被用于其他的任务相关的指令存取任务。新创建的任务被放睡眠队列上,只有通过指令rtems_task_start启动任务 。 注意: 该指令不会导致调用者被调度出CPU(被抢占)。 任务优先级从最高的优先级是1最低是255 如果被请求的栈大小比 RTEMS_MINIMUM_STACK_SIZE 少,RTEMS 将会以RTEMS_MINIMUM_STACK_SIZE为大小创建栈。 RTEMS_MINIMUM_STACK_SIZE 的值是处理器相关的。为驱动程序定义栈空间的时候,应用开发者应该考虑设备驱动对堆栈的利用。 任务的属性以及说明可以参考前面的章节 RTEMS支持的任务的中断等级有256级,这些中断等级在BSP中会映射到对应处理器实际支持的硬件实际的硬件中断等级上。 缺省状态下创建的任务都是本地任务,因为全局的任务会增加系统开销。 当创造全局任务时,任务的名称和ID会广播到系统中的每个处理器上,每个处理器所在的子系统会为全局变量维护一个队列,新建的全局任务将会插入到队列中。 全局对象的总数,包括任务数目,被RTEMS配置表中的 maximum_global_objects字段制定。 9.7.2: TASK_IDENT-获取任务的id函数原型: rtems_status_code rtems_task_ident( 返回值状态: RTEMS_SUCCESSFUL- 成功地获取任务ID RTEMS_INVALID_ADDRESS- ID是空值 RTEMS_INVALID_NAME- 任务名称无效 RTEMS_INVALID_NODE- 任务ID无效 描述: 该指令的获取与任务名字对应的任务ID。 一个任务可以使用 RTEMS_SELF或它自己的任务名字获得它自己的ID。如果任务名字不是全局唯一的,那么这个函数返回的ID将会是同名任务之莫个任务的ID。 获取了任务ID,就可以在其他的与任务相关的函数中对任务进行操作了。 注意: 该指令将不会引起要调用者被调度出处理器。 如果结点参数是 RTEMS_SEARCH_ALL_NODES,系统中所有的结点(子系统)将会被搜索,首先搜索的是本地节点。 如果结点是一个不表现地方结点的有效结点数字,然后只有被被指定的结点输出的任务被搜寻。 该指令在远端节点搜索的时候不会消耗远端节点的CPU,搜索只会搜索全局的对象表格中对应的位值。 |
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
嵌入式软硬件设计咨询 8位
16位 32位 64位 RISC DSP |
||||||||||||||||
| 2004 RTEMS.NET 版权所有 |
||||||||||||||||