<br><br><div class="gmail_quote">On Wed, Sep 28, 2011 at 6:17 AM, Venkatram Tummala <span dir="ltr">&lt;<a href="mailto:venkatram867@gmail.com">venkatram867@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><div><div></div><div class="h5">On Tue, Sep 27, 2011 at 5:40 PM, Jeff Haran <span dir="ltr">&lt;<a href="mailto:jharan@bytemobile.com" target="_blank">jharan@bytemobile.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
<br>
From: <a href="mailto:kernelnewbies-bounces@kernelnewbies.org" target="_blank">kernelnewbies-bounces@kernelnewbies.org</a><br>
[mailto:<a href="mailto:kernelnewbies-bounces@kernelnewbies.org" target="_blank">kernelnewbies-bounces@kernelnewbies.org</a>] On Behalf Of Venkatram<br>
Tummala<br>
Sent: Tuesday, September 27, 2011 5:31 PM<br>
To: Mulyadi Santosa<br>
Cc: kernelnewbies<br>
Subject: Re: Prevent a process from opening a file more than once<br>
<div><br>
On Tue, Sep 27, 2011 at 5:22 PM, Mulyadi Santosa<br>
&lt;<a href="mailto:mulyadi.santosa@gmail.com" target="_blank">mulyadi.santosa@gmail.com</a>&gt; wrote:<br>
Hi :)<br>
<br>
On Wed, Sep 28, 2011 at 06:56, Venkatram Tummala<br>
&lt;<a href="mailto:venkatram867@gmail.com" target="_blank">venkatram867@gmail.com</a>&gt; wrote:<br>
&gt; Hi All,<br>
&gt; I have a simple device driver which creates a /dev/XYZ file. I need to<br>
&gt; prevent a process from opening the file more than once. However,<br>
multiple<br>
&gt; processes can open the file simultaneously. Is there any any elegant<br>
way to<br>
&gt; do this other than checking all opened files in the process ?<br>
Uhm, keep a reference count and increment it on every file open in<br>
your module? How does that sound?<br>
Well, which refcount should i use? I can&#39;t use the refcount in the file<br>
object as the file objects passed to me are different each time the file<br>
is opened in the process.<br>
<br>
</div>When you say &quot;I need to prevent a process from opening the file more<br>
than once.&quot;, do you mean a single process opening the file, closing it<br>
and then opening it again would be disallowed?</blockquote></div></div><div>No. If the file is already opened in the process, the process shouldn&#39;t  be allowed to open the file again. It is fine if the process opens, closes &amp; then opens the file again.</div>
<div class="im">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Or do you mean that a<br>
single process opening the file, keeping it open and then opening it<br>
again under another fd would be disallowed?<br></blockquote></div><div>Yes, this is what i am looking for. </div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
How about multiple threads within the same process? Are they treated as<br>
the same process by these rules?<br></blockquote></div><div>Yes. Threads are treated as the same process. So, if one thread has the file already opened, another thread in the same process shouldn&#39;t be able to open it. </div>


<div><br></div><div>Venkat</div></div><br>
<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>Hi Venkatram,<br><br>I agree with Mulyadi, you maintain a static global variable (int), <br><br>in device_open() -&gt;<br><br>if(var)<br>      return -EBUSY<br>var++<br><br>&amp;<br><br>in device_release() -&gt;<br>
<br>var--<br><br><br>I think this should do the job.<br><br>Regards,<br>Rohan Puri<br>