ARM平台ISR中可否调用ThreadX的tx_event_flags_set()函数
结论
tx_event_flags_set() 可在所有ARM处理器(包括你使用的双核Cortex-A9,以及单核Cortex-A/R/M全系列)的中断服务程序中正常调用,该兼容性同时覆盖非SMP(普通版)和SMP版ThreadX。
相关说明
- 普通版ThreadX文档没有单独标注该API的ISR调用许可,是因为非SMP版本的调用上下文规则统一放在服务说明章节的前置总述部分:所有无阻塞逻辑的ThreadX API默认允许在ISR中调用。
tx_event_flags_set()仅修改事件标志组的状态、触发对应等待线程的就绪判断,全程不会产生阻塞,自然符合ISR调用要求。 - SMP版文档单独明确该API支持ISR调用,是因为SMP版本引入了核间自旋锁等同步逻辑,部分API的上下文限制收窄,所以文档会额外标记确认可用的API,并非SMP版本才新增对ISR调用的支持。
ARM平台调用注意事项
唯一需要遵守的通用限制:ISR的中断优先级不能高于ThreadX配置的
TX_MAX_SYSCALL_INTERRUPT_PRIORITY阈值,该限制对所有ThreadX系统调用都生效,和该API本身的ISR兼容性无关。
内容的提问来源于stack exchange,提问作者svv
相关产品推荐
相关产品推荐

