我有一个低延迟服务器/客户端音频应用程序运行在单独的核心。 (通过cpuset) 没有检测到xunns,我怀疑调度程序打断我的关键例程。由于在用户空间中禁止中断是不可能的,我的想法是创建一个内核模块并为local_irq_disable()/ local_irq_enable()编写包装函数。安全不是问题。具有完全可抢占内核的rt Linux正在使用中。如何调用make内核模块调用或禁用中断?
- 我假设nanosleep函数不会中断吗?
- 什么是更优雅的方式来禁用调度程序,但保持 定时器运行?
- 如何从用户空间调用这些包装函数?
编辑:SMP亲和力是关键字在这里:SMP IRQ Affinity
音频应用程序需要一个关键的例程吗?为什么?怎么样? –
用户空间代码启用/禁用内核中断。听起来像是一个很好的灾难配方。 – Olaf
这是一个关于Linux系统延迟有多低的测试案例。由于回放中仍然有毛刺,但没有xruns,程序中必须有中断。为什么要禁用一个核心的interupts导致灾难?从我在内核部分读到的有关local_irq_save/.. disable的内容中,它们由其他内核处理。 – RootRaven