- 论坛徽章:
- 0
|
原帖由 cwtkang 于 2009-5-21 15:20 发表 ![]()
我用加载内核模块的方法注册系统中断,但是我找到的资料都是Linux2.4下的,可我们的电脑现在都是Linux2.6的,根本就不能成功,哎~~~郁闷呀,大虾能给下指导么?
>>我现在还是没有解决这个问题,现在急死了。我碰上的问题是:
>>1、我一直系统中断注册失败,好可怜
我不知道你是怎么注册的。从你的需求来看,不能用request_irq,因为你实际上是想注册一个用软件触发的假中断。
>>2、我不知道该怎么发一个IPI中断,现在知道的是在APIC.h中有一个函数能往那个Interrupt Command Register (ICR)寄存器写入东西就可以自动引发IPI中断了,但我不知道这个函数是什么,大虾能告诉我么?最后给个测试用例>>参考下,谢谢啦~~~
用IPI是个好办法。 你先把IPI的原理搞懂,然后跟着内核抄。
首先是设置IPI,抄下面这个函数:
apic_intr_init() -->set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
然后grep一下LOCAL_TIMER_VECTOR看看IPI是怎么发的,你会看到类似:
send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
就可以找到内核关于IPI的接口在ipi.c中,再grep看别人怎么用这些函数的。
总的来说就是抄。
注意的是自己加一个IPI要选一个内核没使用的vector,可以参考irq_vectors.h,这里面定义了内核使用到的VECTOR
>>我实在是不行了,这个的东西看了半个多月了,说是很简单,可我根本就不知道该怎么办呀,郁闷了都……
>>请大虾救我,万分感激!!! |
|