Regarding threaded irq and normal irq
anish198519851985 at gmail.com
Tue Sep 6 04:27:22 EDT 2011
On Tue, Sep 6, 2011 at 10:59 AM, anish singh
<anish198519851985 at gmail.com> wrote:
> On Tue, Sep 6, 2011 at 10:51 AM, Mulyadi Santosa
> <mulyadi.santosa at gmail.com> wrote:
>> Hi :)
>> On 06/09/2011, sandeep kumar <coolsandyforyou at 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:
127 * might_sleep - annotation for functions that can sleep
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)
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)
>> Mulyadi Santosa
>> Freelance Linux trainer and consultant
>> blog: the-hydra.blogspot.com
>> training: mulyaditraining.blogspot.com
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
More information about the Kernelnewbies