On Tue, Sep 27, 2011 at 9:19 PM, rohan puri <[email protected]> wrote:
> > > On Wed, Sep 28, 2011 at 6:17 AM, Venkatram Tummala <[email protected] > > wrote: > >> On Tue, Sep 27, 2011 at 5:40 PM, Jeff Haran <[email protected]>wrote: >> >>> >>> >>> From: [email protected] >>> [mailto:[email protected]] On Behalf Of Venkatram >>> Tummala >>> 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 >>> <[email protected]> wrote: >>> Hi :) >>> >>> On Wed, Sep 28, 2011 at 06:56, Venkatram Tummala >>> <[email protected]> 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, >>> multiple >>> > 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. >> >> Venkat >> >> >> _______________________________________________ >> Kernelnewbies mailing list >> [email protected] >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> Hi Venkatram, > > I agree with Mulyadi, you maintain a static global variable (int), > > in device_open() -> > > if(var) > return -EBUSY > var++ > > & > > in device_release() -> > > var-- > > > I think this should do the job. > This will prevent other processes to open the file until a process releases it. This is not what i need. Only the threads in a process shouldn't be able to open the file if it is already opened in the process. Other processes should be able to open it. Venkat > > Regards, > Rohan Puri >
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
