RTEMS 任务管理指令:单任务变量
9.4.15: TASK_VARIABLE_ADD- 为任务添加单任务变量
%A
%A 函数原型 :
%A
%A rtems_status_code rtems_task_variable_add(
%A rtems_id tid,
%A void **task_variable,
%A void (*dtor)(void *)
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功地增加单任务变量
%A
%A RTEMS_INVALID_ADDRESS- task_variable是空值
%A
%A RTEMS_INVALID_ID- 任务ID标识无效
%A
%A RTEMS_NO_MEMORY- RTEMS内存不足
%A
%A RTEMS_ILLEGAL_ON_REMOTE_OBJECT-无法对远端任务添加单任务变量
%A
%A 描述:
%A
%A 该函数将在ptr参数指向的内容增加添加到指定任务语境上下文中。操作后,变量将会变成该任务的私有变量。任务能存取而且修改变量,但是修改其他的任务来说是不透明的,而且其他的任务针对此变量的修改将不会影响到该变量在当前任务中的值。这是通过将变量的值储存到任务的上下文区域来完成的。每一次任务切换的时候,单任务变量的值将会入栈,任务重新启动,值会被复原。如果dtor参数不是空值,它将指向一个析构函数。这个析构函数在任务被删除的时候,会被调用,调用时传给析构函数的参数是单任务变量的值。
%A
%A 注意:
%A
%A 单任务变量将会增加任务切换所需的时间,所以为了优化系统速度,应该尽量不要使用单任务变量。一个更为高效的将所有要变为单任务变量的变量统一存放在一个使用结构体表示的内存区域中,将此结构体的指针作为单任务变量进行维护,这样,对于任务调度频繁的系统还是很有效的。
%A 9.4.16: TASK_VARIABLE_GET- 获得数值一单任务变量
%A
%A 函数原型:
%A
%A rtems_status_code rtems_task_variable_get(
%A
%A rtems_id tid,
%A
%A void **task_variable,
%A
%A void **task_variable_value
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功获取单任务变量
%A
%A RTEMS_INVALID_ADDRESS- task_variable是空值
%A
%A RTEMS_INVALID_ADDRESS- task_variable_value是空值
%A
%A RTEMS_INVALID_ADDRESS- 不被定位 task_variable
%A
%A RTEMS_NO_MEMORY- 任务 ID 标识无效
%A
%A RTEMS_ILLEGAL_ON_REMOTE_OBJECT- 无法获取远程节点上的单任务变量
%A
%A 描述:
%A
%A 该函数在tid指定任务中搜索单任务变量,并且获取该变量的值。搜寻到的值存放task_variable_value指定的内存中。一般来说任务是不会使用该函数获取本地的单任务变量的,因为他可以直接存取这些变量。
%A
%A 注意:
%A
%A 如果需要更改task_variable_value指向的内存的值,必须将对应的内存区定义为volatile类型,这样,编译优化时不会出错。 在该情况那两个指针 task_variable_value 和该指针指向的区域task_variable_value 都应该定义成vilatile类型。
%A 9.4.17: TASK_VARIABLE_DELETE- 删除单任务变量
%A
%A 函数原型:
%A
%A rtems_status_code rtems_task_variable_delete(
%A
%A rtems_id tid,
%A
%A void **task_variable
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 单任务变量成功地被删除
%A
%A RTEMS_INVALID_ID- 无效任务ID标识
%A
%A RTEMS_INVALID_ADDRESS- task_variable是空值
%A
%A RTEMS_ILLEGAL_ON_REMOTE_OBJECT- 无法删除远端节点的单任务变量
%A
%A 描述:
%A 该函数从任务的任务上下文中删除单任务变量。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。