From: Sander van Leeuwen Sander van on 23 Oct 2009 10:16 I'm looking for an official way to send an IPI to a target CPU. This target CPU is running code at DISPATCH_LEVEL, so queuing a DPC doesn't immediately send an IPI. KeIpiGenericCall does exactly what I want, but it's a broadcast (= expensive) and Vista+ only. HalRequestIpi is an option, but it's undocumented and its interface has changed in Windows 7. I did manage to make it work in Vista. Thanks for any suggestions! Sander van Leeuwen
From: Doron Holan [MSFT] on 23 Oct 2009 12:46 why do you need to send an IPI? IPIs are typically considerd an internal operation to the OS, not something drivers do on their own d -- This posting is provided "AS IS" with no warranties, and confers no rights. "Sander van Leeuwen" <Sander van Leeuwen(a)discussions.microsoft.com> wrote in message news:EC92F105-CEB3-462F-94BF-3D2C464175F9(a)microsoft.com... > I'm looking for an official way to send an IPI to a target CPU. This > target > CPU is running code at DISPATCH_LEVEL, so queuing a DPC doesn't > immediately > send an IPI. > > KeIpiGenericCall does exactly what I want, but it's a broadcast (= > expensive) and Vista+ only. > > HalRequestIpi is an option, but it's undocumented and its interface has > changed in Windows 7. I did manage to make it work in Vista. > > Thanks for any suggestions! > > Sander van Leeuwen
From: Chris M. Thomasson on 23 Oct 2009 16:31 "Doron Holan [MSFT]" <doron.holan(a)online.microsoft.com> wrote in message news:%23qM3uBAVKHA.2932(a)TK2MSFTNGP04.phx.gbl... > why do you need to send an IPI? IPIs are typically considerd an internal > operation to the OS, not something drivers do on their own FWIW, I use IPI + Ack in order to ensure that the target processor has executed a memory barrier. One you do this for all processors, you have observed a synchronization epoch. One can use sync-epochs to implement exotic non-blocking algorithms (e.g., RCU, vZOOM, asymmetric rw-lock, ect...). Luckily, Windows provides everything I need to do this, in user-space wrapped up in a single procedure: http://msdn.microsoft.com/en-us/library/ms683148(VS.85).aspx For pre-Vista systems I use a hack in order to poll for sync-epochs: http://groups.google.com/group/comp.programming.threads/browse_frm/thread/abb3622071b0d52f
|
Pages: 1 Prev: Improving Performance Of ReadFile Next: Pageheap.exe gone from Debugging Tools x86? |