title: Why kernel code/thread executing in interrupt context cannot sleep?
body: <p>I am reading following article by Robert Love</p>
  
  <p><a href="http://www.linuxjournal.com/article/6916" rel="noreferrer">http://www.linuxjournal.com/article/6916</a></p>
  
  <p>that says </p>
  
  <p>"...Let's discuss the fact that work queues run in process context. This is in contrast to the other bottom-half mechanisms, which all run in interrupt context. Code running in interrupt context is unable to sleep, or block, because interrupt context does not have a backing process with which to reschedule. Therefore, because interrupt handlers are not associated with a process, there is nothing for the scheduler to put to sleep and, more importantly, nothing for the scheduler to wake up..."</p>
  
  <p>I don't get it. AFAIK, scheduler in the kernel is O(1), that is implemented through the bitmap. So what stops the scehduler from putting interrupt context to sleep and taking next schedulable process and passing it the control?</p>