新闻  |   论坛  |   博客  |   在线研讨会
rtems:任务管理指令:创建与启动
tongxin | 2009-04-12 21:48:26    阅读:1333   发布文章

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

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客