C 如何以及何时初始化此irq的值

C 如何以及何时初始化此irq的值,c,linux-kernel,arm,linux-device-driver,C,Linux Kernel,Arm,Linux Device Driver,我将在arch/arm/kernel/perf_event.c中浏览Linux内核的部分源代码,并试图了解request\u irq是如何在这里进行设置的: static int armpmu_reserve_hardware(struct arm_pmu *armpmu) { int err; struct platform_device *pmu_device = armpmu->plat_device; if (!pmu_device)

我将在
arch/arm/kernel/perf_event.c
中浏览Linux内核的部分源代码,并试图了解
request\u irq
是如何在这里进行设置的:

static int armpmu_reserve_hardware(struct arm_pmu *armpmu)
 {
    int err;
    struct platform_device *pmu_device = armpmu->plat_device;

    if (!pmu_device)
            return -ENODEV;

    pm_runtime_get_sync(&pmu_device->dev);
    err = armpmu->request_irq(armpmu, armpmu_dispatch_irq);
    if (err) {
            armpmu_release_hardware(armpmu);
            return err;
    }

    return 0;
}

现在请求_irq的第一个参数的值应该是一个整数。现在我不知道整数值是如何初始化的

这里还提供了结构pmu:

我们在内核设备树文件中定义了PMU表示

 pmu {
     compatible = "arm,cortex-a15-pmu";
     interrupts = <0 20 0xf01 0 21 0xf01 0 22 0xf01 0 23 0xf01 >;
  };
pmu{
compatible=“arm,cortex-a15-pmu”;
中断=;
};

现在,我相信其中一条中断线是20,21,22,23,但现在确定如何

根据请求\u id需要一个
struct arm\u pmu*

根据请求\u id需要一个
struct arm\u pmu*

是的,这部分我理解,但结构arm_pmu*何时以及如何从中获取ot valude?好的,但你写了
现在请求的第一个参数的值应该是一个整数
?你的句子没有意义。请求的第一个参数不是一个整数,它是一个结构。当然,这不是同一个请求。是的,mathk,我理解这一部分,但结构arm_pmu*何时以及如何从中获取ot valude?好的,但您编写了
现在请求的第一个参数的值应该是一个整数
?您的句子没有意义。请求的第一个参数不是一个整数,它是一个结构。当然这与请求不同。结构中名为
foobar()
的函数指针不必调用名为
foobar()
的全局函数;将
foobar()
替换为
request\u irq()
。您可能认为这是逻辑的,但它不是由语言强制执行的,如果您这样想,肯定不想切换到C++。在结构中,一个名为“代码> FoBoAr())/<代码>的函数指针不必调用一个名为 FoBoAr()的全局函数< /C>。将
foobar()
替换为
request\u irq()
。你可能认为这是合乎逻辑的,但它不是由语言强制执行的,如果你这样想,你肯定不想切换到C++。