On Tue, Sep 6, 2011 at 10:59 AM, anish singh <anish198519851985@xxxxxxxxx> wrote: > On Tue, Sep 6, 2011 at 10:51 AM, Mulyadi Santosa > <mulyadi.santosa@xxxxxxxxx> wrote: >> Hi :) >> >> On 06/09/2011, sandeep kumar <coolsandyforyou@xxxxxxxxx> wrote: >>> Hmm..But when i tried to take a mutex lock in threaded_irq, it is throwing a >>> warning message >>> "BUG: sleeping function called from invalid context"... So i was wondering >>> which way it is.. >> >> Please don't top post :) >> >> Anyway, regarding that "BUG:" message, could it be that mutex function >> mistakenly assume it's called inside top half, thus bails out since > How can mutex assume? IMHO the message would have printed > because sleeping would be forbidden there but again AFAIK in the threaded > handler we can do I2C transactions which can sleep.So kind of > paradox there. >>something like using in_irq() inside the threaded irq handler? I think after going thorough the code of mutex_lock we can find out the reason why it is printing the warning eventhough we are calling it in a threaded handler i.e. kernel thread. >From the code: 126 /** 127 * might_sleep - annotation for functions that can sleep 128 * 129 * this macro will print a stack trace if it is executed in an atomic 130 * context (spinlock, irq-handler, ...). 129 line no is important. This might_sleep is called by mutex_lock function and in the defintion of __might_sleep i found below code.I think this below if condition is false because irqs_disabled is true.This causes the warning. if ((preempt_count_equals(preempt_offset) && !irqs_disabled()) || system_state != SYSTEM_RUNNING || oops_in_progress) return; Hope i am right? > ps:I have seen the code where sandeep is doing the taking the mutex lock. > He is taking mutex lock at the beginging of the handler and releasing > at the end. >> sleeping is forbidden there? which mutex function do you use? (sorry I >> don't follow every locking functions exist now) >> >> -- >> regards, >> >> Mulyadi Santosa >> Freelance Linux trainer and consultant >> >> blog: the-hydra.blogspot.com >> training: mulyaditraining.blogspot.com >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies