<p><br>
On Jul 3, 2012 7:55 PM, &quot;Parmenides&quot; &lt;<a href="mailto:mobile.parmenides@gmail.com">mobile.parmenides@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi,<br>
&gt;<br>
&gt;     It is said that kernel can not be preempted in interrupt context<br>
&gt; and when it is in a critical section protected by a spin lock.<br>
&gt;<br>
&gt; 1. For the spinlock case, it is easy to get if preemption is allowed<br>
&gt; in critical section, the purpose of protection provided by spinlock<br>
&gt; can not be achieved readily.<br>
&gt;<br>
I don&#39;t know about Linux kernel. But the very prime purpose of a spin lock is to synchronize in the presence of pre-emption. Are u talking about implementing spin lock in the absence of an atomic hardware instruction?</p>

<p>&gt; 2. For the interrupt context case, I think when processing interrupt,<br>
&gt; kernel can be preempted in principle. But, this really increases the<br>
&gt; interrupt processing time which further cause longer response time and<br>
&gt; data missing in device. Except that, is there any other reasons?<br>
&gt;<br>
&gt; 3. Kernel is responsible for prohibiiting passive process switches,<br>
&gt; namely preemption, in the above cases. But, It seems that it does not<br>
&gt; take care of active process swtiches, namely yield. For example, some<br>
&gt; code in a critical section protected by a spinlock can invoke<br>
&gt; schedule() to switch process passively. Is this the case?<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Kernelnewbies mailing list<br>
&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</p>