> 1. Which stack does the bottom halves use for their execution ? Modern "bottom-half" implementations built on top of kernel threads use the stack of the underlying thread. (just like how any thread on the system does) > 2. Why can't we sleep in bottom halves ? We can! Modern bottom half implementations can sleep i.e. relinquish CPU to other threads. Q. What are Bottom Halves? Ans. A piece of code that is... a. scheduled/executed asynchronously from the triggering event (interrupt). (compared to the "top-half" i.e. the ISR that is executed synchronously) b. and usually can take significant amount of time. (compared to the time taken by the "top-half" i.e. ISR) Over the years, several implementations of the "Bottom Halves" concept have been developed on the Linux kernel. Co-incidentally, one of the oldest (now deprecated) implementation was itself called Bottom-Halves. There are several modern implementations of bottom-halves : Soft-IRQs, Tasklets, and Workqueues. The latter/recent approaches to implementing bottom-halves are wrappers around Linux kernel threads. I have tried to summarize these various "Bottom Half" implementations within the Linux kernel and provide some commentary of their development over the years in the following slide deck: https://thecodeartist.blogspot.com/2018/06/bottom-halves-on-linux.html For more details, checkout the various links to wikis and articles in the last slide "References / Recommended Reading" in the above slide-deck. regards CVS _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies