The driver is opened by multiple processes, One such process is a diagnostics. Where I am checking sanity of some of the registers if I make ioctl open for all the processes.It can screw up my diagnostics check.(write some values to registers). This is basic reason I am using lock to my ioctl.
Thanks Praveen On Tue, Nov 15, 2011 at 1:28 PM, Dave Hylands <[email protected]> wrote: > Hi Praveen, > > On Mon, Nov 14, 2011 at 11:22 PM, Praveen kumar <[email protected]> > wrote: > > > > Hi All, > > I have a situation where I have to lock the ioctl provided in my driver. > I > > have a uni processor (ARM) system. > > I am using Mutex as the lock for my ioctl. > > DEFINE_MUTEX(&lock_ioctl); > > MyIoctl() > > { > > Mutex_lock(&lock_ioctl); > > Switch(){ > > ........... > > } > > Mutex_unlock(&lock_ioctl); > > return 0; > > } > > I just wanted to know am I using the best lock available for the > situation > > aor do I have any flaw in my implementation??? > > > > And from LKD I read that "*lock the data not the code*" and which I am > > literally doing so ?? any comments on this ? > > By creatiing something called lock_ioctl, I'd say you're locking the code. > > Locking the data means that lets suppose you have some data structure > which requires mutual exclusion. Then I'd create a lock associated > with that data structure (and probably the lock would be a member of > the data structure), and anytime I needed to manipulate/access the > data structure (in an atomic manner), I'd acquire the lock. > > > I have interrupts in my driver which is nothing to do with the lock.I am > > taking care that where ever I return in my ioctl the lock is released. > > What are you locking? Does every single ioctl really need to acquire > the lock? Why? > > -- > Dave Hylands > Shuswap, BC, Canada > http://www.davehylands.com >
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
