I have a device which is supposed to be generating interrupts but my ISR is never getting called on a certain machine. The same device and driver works fine on a machine with a somewhat different architecture, with my ISR being called.
I would like to see the raw count of interrupts from the device. In a *nix system, I could just do ‘cat /proc/interrupts’, but I don’t see a way to get this in Windows. I have set up a kernel debugging connection over Ethernet, and I can break in and see regs, variables, etc.
I always put ETW tracing in a driver, including the ISR which I like to measure the duration of. The TraceLogging ETW library is REALLY easy to get basic logging working (like a dozen lines, I recently posted about this on NTDEV). I suppose you could also use WPP tracing if that’s your preference.
You can also put an interlocked counter incremented in your ISR and write the log event with this count, like for a request, in some lower bandwidth path. My memory is writing a TraceLogging event take in the vicinity of 0.3uSec, although if you are generating 500K events/sec, it burns though trace buffer memory pretty fast.
If you use the ETWGuid utility to generate a standard hashed provider GUID, you can then just use the provider name in TraceView and not the GUID.
AFIK there nothing exactly like /proc/interrupts, although there is some general interrupt profiling with the Windows Performance Recorder.
Jan
-----Original Message-----
From: xxxxx@lists.osr.com On Behalf Of xxxxx@excalibur.co.il xxxxx@lists.osr.com Sent: Wednesday, August 22, 2018 9:02 AM To: Kernel Debugging Interest List Subject: [windbg] get count of interrupts before ISR?
Hi,
I have a device which is supposed to be generating interrupts but my ISR is never getting called on a certain machine. The same device and driver works fine on a machine with a somewhat different architecture, with my ISR being called.
I would like to see the raw count of interrupts from the device. In a *nix system, I could just do ‘cat /proc/interrupts’, but I don’t see a way to get this in Windows. I have set up a kernel debugging connection over Ethernet, and I can break in and see regs, variables, etc.