Thread (7 messages) 7 messages, 4 authors, 2011-09-06

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 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.
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help