Regarding threaded irq and normal irq
From: anish singh <hidden>
Date: 2011-09-06 08:27:22
On Tue, Sep 6, 2011 at 10:59 AM, anish singh [off-list ref] wrote:
On Tue, Sep 6, 2011 at 10:51 AM, Mulyadi Santosa [off-list ref] wrote:quoted
Hi :) On 06/09/2011, sandeep kumar [off-list ref] wrote:quoted
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 sinceHow 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.
quoted
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.quoted
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 at kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies