Which kernel version are u using???<br><br>As far as I know, before 2.6.36, ioctl calls used to hold BKL, so no need to have separate locking mechanism.<br><br>If you are using unlocked_ioctl (after 36 kernel) then you need to take care of locking. Now, what kind of lock you want to use, depends on your requirement. It could be code lock or data lock..<br>
<br><br><br><br><div class="gmail_quote">On Tue, Nov 15, 2011 at 5:53 PM, Praveen kumar <span dir="ltr">&lt;<a href="mailto:chatpravi@gmail.com">chatpravi@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The driver is opened by multiple processes, One such process is a diagnostics.<br>Where I am checking sanity of some of the registers if I make ioctl open for all the processes.It can screw <br>up my diagnostics check.(write some values to registers). This is basic reason I am using lock to my ioctl.<br>

<br>Thanks <br><span class="HOEnZb"><font color="#888888">Praveen</font></span><div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Tue, Nov 15, 2011 at 1:28 PM, Dave Hylands <span dir="ltr">&lt;<a href="mailto:dhylands@gmail.com" target="_blank">dhylands@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Praveen,<br>
<div><br>
On Mon, Nov 14, 2011 at 11:22 PM, Praveen kumar &lt;<a href="mailto:chatpravi@gmail.com" target="_blank">chatpravi@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi All,<br>
&gt; I have a situation where I have to lock the ioctl provided in my driver. I<br>
&gt; have a uni processor (ARM) system.<br>
&gt; I am using Mutex as the lock for my ioctl.<br>
&gt; DEFINE_MUTEX(&amp;lock_ioctl);<br>
&gt; MyIoctl()<br>
&gt; {<br>
&gt; Mutex_lock(&amp;lock_ioctl);<br>
&gt; Switch(){<br>
&gt; ...........<br>
&gt; }<br>
&gt; Mutex_unlock(&amp;lock_ioctl);<br>
&gt; return 0;<br>
&gt; }<br>
&gt; I just wanted to know am I using the best lock available for the situation<br>
&gt; aor do I have any flaw in my implementation???<br>
&gt;<br>
&gt; And from LKD I  read that &quot;*lock the data not the code*&quot; and which I am<br>
&gt; literally doing so ?? any comments on this ?<br>
<br>
</div>By creatiing something called lock_ioctl, I&#39;d say you&#39;re locking the code.<br>
<br>
Locking the data means that lets suppose you have some data structure<br>
which requires mutual exclusion. Then I&#39;d create a lock associated<br>
with that data structure (and probably the lock would be a member of<br>
the data structure), and anytime I needed to manipulate/access the<br>
data structure (in an atomic manner), I&#39;d acquire the lock.<br>
<div><br>
&gt; I have interrupts in my driver which is nothing to do with the lock.I am<br>
&gt; taking care that where ever I return in my ioctl the lock is released.<br>
<br>
</div>What are you locking? Does every single ioctl really need to acquire<br>
the lock? Why?<br>
<span><font color="#888888"><br>
--<br>
Dave Hylands<br>
Shuswap, BC, Canada<br>
<a href="http://www.davehylands.com" target="_blank">http://www.davehylands.com</a><br>
</font></span></blockquote></div><br>
</div></div><br>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></blockquote></div><br>