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())/<代码>的函数指针不必调用一个名为foobar()
替换为request\u irq()
。你可能认为这是合乎逻辑的,但它不是由语言强制执行的,如果你这样想,你肯定不想切换到C++。