内核模块处理中断的速度有多快?

时间:2015-09-07 12:42:11

标签: kernel drivers embedded interrupt

我在嵌入式Linux(Yocto发行版)上编写内核模块,我想从其中一个硬件定时器处理一些高频中断。但是,我发现Linux的1us分辨率太高了(?) - 我认为是因为值不正确。 代码很简单:

static irqreturn_t pmodule_ref2_irq(int irq, void *lp)
{
        unsigned long int temp;
        ns++;
        temp = ioread32(temp_base_addr + TTC1_INTERRUPT_REGISTER);
        return IRQ_HANDLED;
}

将间隔值更改为高100倍可解决问题,但我的分辨率并不理想。

我的问题是:有人能告诉我内核模块中断的处理速度有多快,或者我该如何检查?

1 个答案:

答案 0 :(得分:0)

延迟取决于您的最终硬件。您可以在此处了解预期结果(使用preempt-rt时): https://www.osadl.org/Combined-latency-plot-of-all-systems-und.qa-latencyplot-all.0.html?latencies=&showno=&slider=159

基本上,您应该期望最大延迟在30到200 us之间。该值包括内核空间到用户空间交换机,但这可以给你一个想法。