当前位置:   article > 正文

Xenomai入门1_如何入门 xenomai

如何入门 xenomai

API服务标签

Cobalt / POSIX库中的所有服务,或属于基于Copperplate库的API的所有服务,都可能仅限于特定的调用上下文,或具有特定的副作用。

在双内核模式下,Cobalt API在所有其他面向应用程序的API的基础上,通过Cobalt实时核心提供POSIX实时服务。因此,以下信息适用于Xenomai可用的所有面向应用程序的API,例如Cobalt / POSIX库,Alchemy API,还适用于所有RTOS仿真器。为了描述此信息,此部分记录的每个服务在适用时带有一组标签。
下表将整个文档中使用的标记与其对调用者含义的描述进行了匹配。
注意
Xenomai线程是指Xenomai
API服务创建的任何线程,包括双内核模式下的实时Cobalt / POSIX线程。常规/普通POSIX线程是指由基于glibc的标准POSIX服务在Mercury或Cobalt上直接创建的任何线程(即NPTL / linuxthreads _STD(pthread_create())),但不包括已升级为实时的线程。之后将域(又称为“阴影”)移到Cobalt上。

内容标签

TagContext on entry
xthread-onlyMust be called from a Xenomai thread called【调用】
xhandler-onlyMust be called from a Xenomai handler. See note.
xcontextMay be called from any Xenomai context (thread or handler).
pthread-onlyMust be called from a regular POSIX thread
thread-unrestrictedMay be called from a Xenomai or regular POSIX thread indifferently
xthread-nowaitMay be called from a Xenomai thread unrestricted, or from a regular thread as a non-blocking service only. See note.
unrestrictedMay be called from any context previously described

Note:
Xenomai处理程序用于来自基于Copperplate的API的基于回调的通知,例如超时。此上下文未映射到常规Linux信号处理程序,实际上是由特殊的线程上下文提供的,因此,当代表此类处理程序运行时,API实现可能在内部调用异步不安全的POSIX服务。因此,从异步常规信号处理程序调用Xenomai API服务从根本上讲是不安全的。
在Cobalt上,主线程是一种特殊情况,它从常规POSIX线程开始,然后在调用main()例程之前,作为初始化过程的一部分自动切换到Cobalt线程,除非禁用了自动引导程序(请参见http://xenomai.org/2015/05/application-setup-and-init/#Application_entry_CC)。
通过Cobalt核心运行应用程序时可能产生的副作用(即双内核配置)

TagDescription
switch-primarythe caller may switch to primary mode
switch-secondarythe caller may switch to secondary mode

不推荐使用的清单

Global COMPAT__rt_alarm_create (RT_ALARM
*alarm, const char *name)

Global COMPAT__rt_event_clear (RT_EVENT
*event, unsigned long mask, unsigned long *mask_r)

Global COMPAT__rt_event_create (RT_EVENT
*event, const char *name, unsigned long ivalue, int mode)

Global COMPAT__rt_event_signal (RT_EVENT
*event, unsigned long mask)

Global COMPAT__rt_task_create (RT_TASK
*task, const char *name, int stksize, int prio, int mode)

Global COMPAT__rt_task_set_periodic (RT_TASK
*task, RTIME idate, RTIME period)

Global rt_alarm_wait (RT_ALARM *alarm)

Global RTDM_EXECUTE_ATOMICALLY (code_block)

Global rtdm_task_sleep_until (nanosecs_abs_t
wakeup_time)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/694573
推荐阅读
相关标签
  

闽ICP备14008679号