阅读:1386回复:3
KeRaiseIrql能代替spinlock吗
文档说KeRaiseIrql可以防止cpu切换,那么是否可以用它来取代某些spinlock呢?
|
|
沙发#
发布于:2004-01-30 09:53
突然省悟了,提升级别只是保证当前的code不被中断,可并没有处理重入问题
spinlock则行 似乎原来的问题看来比较可笑了 |
|
板凳#
发布于:2004-01-30 09:48
我就是在指多cpu呀
文档说在调用KeGetCurrentProcessorNumber前,必须使用KeRaiseIrql防止此刻发生CPU切换而得不到正确的cpu number。 在DISPATCH_LEVEL情况,是不可能被中断的,多cpu也一样 这样,就引出我前面的疑问 ms有两篇配套的文章,里面也提到了spinlock在单cpu上确实只做了IRQL=DISPATCH_LEVEL,大家探讨一下吧 http://www.microsoft.com/whdc/hwdev/driver/IRQL.mspx http://www.microsoft.com/whdc/hwdev/driver/LOCKS.mspx |
|
地板#
发布于:2004-01-29 20:11
在单CPU上可以,我反汇编了他的代码,在单CPU上就是把IRQL提升到2的,不过在多CPU上恐怕不行,必须用SPINLOCK
|
|
|