On Tue, Sep 6, 2011 at 10:59 AM, anish singh <anish198519851985@gmail.com> wrote:
On Tue, Sep 6, 2011 at 10:51 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com> wrote:
Hi :)
On 06/09/2011, sandeep kumar <coolsandyforyou@gmail.com> 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@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies