> On Mon, Mar 23, 2015 at 2:18 PM, Milton Krutt <milton@xxxxxxxxx> wrote: > > Hi. > > It is known that no semaphore synchronization should be > > used inside an interrupt handler. > > > > Anyway, I am looking at a freeBSD device driver (written by > > a profesionist) and there are semaphores inside an interrupt > > handler's subroutine. > > > > Since I should port to linux that driver, I ask you how can I > > reach such synchronization under linux; I tried to use semaphores > > inside my handler but I got complains, and I don't want to break > > the law, so no semaphores for me. > > Perhaps spinlocks could be the solution :). > > 2.6.10 please no - :), Linux kernel is now at 4.0. > > Daniel. Yes and no. The routine the int. handler's delay depends on has to make some non atomic work. So if I lock a spinlock and then I do some "lengthy" (i.e. non atomic) job, then I get a warning message like "spinlock held while being preempted" (or similar). In symbols, you suggest something like process P{ spin_lock(lock); non_atomic_function(); spin_unlock(lock); } int. handler { spin_lock(lock); do_things(); /* preferably atomically */ spin_unlock(lock); } My first attempt is still to avoid both semaphores and the above remedy, in order to delay the int. handler up to a desired point. Thanks! _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies