Prevent a process from opening a file more than once
rohan.puri15 at gmail.com
Wed Sep 28 00:19:44 EDT 2011
On Wed, Sep 28, 2011 at 6:17 AM, Venkatram Tummala
<venkatram867 at gmail.com>wrote:
> On Tue, Sep 27, 2011 at 5:40 PM, Jeff Haran <jharan at bytemobile.com> wrote:
>> From: kernelnewbies-bounces at kernelnewbies.org
>> [mailto:kernelnewbies-bounces at kernelnewbies.org] On Behalf Of Venkatram
>> Sent: Tuesday, September 27, 2011 5:31 PM
>> To: Mulyadi Santosa
>> Cc: kernelnewbies
>> Subject: Re: Prevent a process from opening a file more than once
>> On Tue, Sep 27, 2011 at 5:22 PM, Mulyadi Santosa
>> <mulyadi.santosa at gmail.com> wrote:
>> Hi :)
>> On Wed, Sep 28, 2011 at 06:56, Venkatram Tummala
>> <venkatram867 at gmail.com> wrote:
>> > Hi All,
>> > I have a simple device driver which creates a /dev/XYZ file. I need to
>> > prevent a process from opening the file more than once. However,
>> > processes can open the file simultaneously. Is there any any elegant
>> way to
>> > do this other than checking all opened files in the process ?
>> Uhm, keep a reference count and increment it on every file open in
>> your module? How does that sound?
>> Well, which refcount should i use? I can't use the refcount in the file
>> object as the file objects passed to me are different each time the file
>> is opened in the process.
>> When you say "I need to prevent a process from opening the file more
>> than once.", do you mean a single process opening the file, closing it
>> and then opening it again would be disallowed?
> No. If the file is already opened in the process, the process shouldn't be
> allowed to open the file again. It is fine if the process opens, closes &
> then opens the file again.
>> Or do you mean that a
>> single process opening the file, keeping it open and then opening it
>> again under another fd would be disallowed?
> Yes, this is what i am looking for.
>> How about multiple threads within the same process? Are they treated as
>> the same process by these rules?
> Yes. Threads are treated as the same process. So, if one thread has the
> file already opened, another thread in the same process shouldn't be able to
> open it.
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> Hi Venkatram,
I agree with Mulyadi, you maintain a static global variable (int),
in device_open() ->
in device_release() ->
I think this should do the job.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Kernelnewbies