I am reading following article by Robert Love
http://www.linuxjournal.com/article/6916
that says
\"...Let\'s discuss the fact that work queues run i
If a higher-level interrupt routine gets to the point where the next thing it must do has to happen after a period of time, then it needs to put a request into the timer queue, asking that another interrupt routine be run (at lower priority level) some time later.
When that interrupt routine runs, it would then raise priority level back to the level of the original interrupt routine, and continue execution. This has the same effect as a sleep.