点击查看《Xenomai/IPIPE源代码情景解析》
原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!
6.4.3 Xenomai xnthread_relax原理
实时线程有时需要离开head域,转而在root域中执行,主要场景有两个:
(1)执行非实时工作:运行涉及由Linux内核处理的常规系统调用的非时间关键(带内)工作。
(2)处理CPU异常:从CPU异常中恢复,例如处理主要内存访问故障,对于这类故障,无需关注响应时间,也无需在实时核心中重复处理。
xnthread_relax,顾名思义,是一个放松过程(可以联想到脱离硬实时)。它把任务从Xenomai迁移到Linux中共分为4个步骤,核心调用堆栈如下,用4种颜色标识。

1. pipeline_post_inband_work(&wakework)
pipeline_post_inband_work是一个宏定义,它直接调用ipipe_post_work_root。
关于ipipe_post_work_root,回到第三章,参考《3.4.4 __ipipe_init_early之再论虚拟中断》,它调用__ipipe_set_irq_pending(&ipipe_root, irq)把__ipipe_work_virq虚拟中断记录到root domain的interrupt log。直到interrupt log被回放,在root domain中调用虚拟中断响应程序__ipipe_do_work来完

最低0.47元/天 解锁文章
3445

被折叠的 条评论
为什么被折叠?



