In my driver code, I want to set a bit in a HW Register 1. HW will send an interrupt when setting the register is done. I don't want my driver code to block until the interrupt is sent from the HW. On Sat, Feb 1, 2014 at 12:06 AM, anish singh <anish198519851985@xxxxxxxxx> wrote: > On Fri, Jan 31, 2014 at 11:55 PM, m silverstri > <michael.j.silverstri@xxxxxxxxx> wrote: >> Hi, >> >> I read this article http://www.linuxjournal.com/article/5833 to learn >> about spinlock. I try this to use it in my kernel driver. >> >> Here is what my driver code needs to do: >> In f1(), it will get the spin lock, and caller can call f2() will wait >> for the lock since the spin lock is not being unlock. The spin lock >> will be unlock in my interrupt handler (triggered by the HW). > Wrong design!!! >> >> void f1() { >> spin_lock(&mylock); >> // write hardware >> REG_ADDR += FLAG_A; > So here you take spinlock and release in interrupt handler.What > if there is no interrupt handler and someone calls this fucntion > he will blocked forever. >> >> } >> >> void f2() { >> spin_lock(&mylock); >> //... >> } >> >> The hardware will send the application an interrupt and my interrupt >> handler will call spin_unlock(&mylock); >> >> My question is if I call >> f1() >> f2() // i want this to block until the interrupt return saying settingyou >> REG_ADDR is done. >> >> when I run this, I get an exception in kernel saying a deadlock " >> INFO: possible recursive locking detected" >> >> How can I re-write my code so that kernel does not think I have a deadlock? >> >> I want my driver code to wait until HW sends me an interrupt saying >> setting REG_ADDR is done. > Let us know what is your requirement?I am sure there must be a simple > way to handle than this magic done here. > Explain what are you trying to do in detail and I am sure lot of > people will jump > to help. >> >> Thank you. >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies