I am working on an embedded system that my company has developed. (My company also developed the driver.) The problem we're seeing is that on our embedded system it takes about 100 milliseconds (standard deviation of 0.5 milliseconds so this is very consistent) to wake up a thread that is waiting on a hardware interrupt.
However, running the same driver and executable (exact same binaries) on a desktop (with different kernel configuration) only takes about half a millisecond. We also ran tests on our embedded system with other operating systems (embedded XP and VxWorks) and the delays take no longer than 3 milliseconds, so we've been able to eliminate the hardware.
We have also changed part of the kernel configuration and recompiled the kernel. When we re-ran the tests with the new kernel, the delays doubled to about 200 milliseconds. So we believe the problem is the kernel configuration.
So my questions are: Has anyone had similar experiences? Does anyone have any suggestions for what kernel configuration(s) might be the culprit(s)?
Thank you for all your help!
- Kevin Hall