wake_up_interruptible in ISR
Hello, I see in the source (linux ver 3.3) that wake_up_interruptible function doesn't sleep so I used in it an ISR but I'm getting 'BUG:scheduling while atomic' message. (I'm not sure it's coming from this) I'm looking for the exact cause but Is there any caveat when using wake_up_interruptible() in an ISR? (I found some drivers use it in ISR, some use it in work_struct) I also read in http://www.slideshare.net/rampalliraj/tasklet-vs-work-queues?from_action=sav... that tasklet is not allowed to sleep but work is. (because tasklet is not in process context, but in bottom-half) I don't know if I have to move my wake_up_interruptible function to tasklet or work(queue) or even it matters to the current problem. Any tip will be appreciated. Regards, Chan
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@kernelnewbies.org] On Behalf Of Chan Kim Sent: Monday, May 25, 2015 10:23 PM To: kernelnewbies@kernelnewbies.org Subject: wake_up_interruptible in ISR
Hello,
I see in the source (linux ver 3.3) that wake_up_interruptible function doesn't sleep
Not sure how you came to that conclusion, but calling that function definitely can result in an attempt to do a context switch. That's what the "scheduling while atomic" is telling you. To my knowledge it is only safe to call this from process context. No ISRs, no bottom halves. Could be it's that "_interruptible" in the name that is misleading you. That means the wait can be interrupted and the call can return if the process doing the waiting is delivered a signal. It's got nothing to do with "interrupts" per se. Jeff Haran
so I used in it an ISR but I'm getting 'BUG:scheduling while atomic' message. (I'm not sure it's coming from this) I'm looking for the exact cause but Is there any caveat when using wake_up_interruptible() in an ISR? (I found some drivers use it in ISR, some use it in work_struct)
I also read in http://www.slideshare.net/rampalliraj/tasklet-vs-work- queues?from_action=save that tasklet is not allowed to sleep but work is. (because tasklet is not in process context, but in bottom-half) I don't know if I have to move my wake_up_interruptible function to tasklet or work(queue) or even it matters to the current problem.
Any tip will be appreciated. Regards,
Chan _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-----Original Message----- From: Jeff Haran Sent: Tuesday, May 26, 2015 10:31 AM To: 'Chan Kim'; kernelnewbies@kernelnewbies.org Subject: RE: wake_up_interruptible in ISR
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@kernelnewbies.org] On Behalf Of Chan Kim Sent: Monday, May 25, 2015 10:23 PM To: kernelnewbies@kernelnewbies.org Subject: wake_up_interruptible in ISR
Hello,
I see in the source (linux ver 3.3) that wake_up_interruptible function doesn't sleep
Please ignore the below. I confused it with wake_event_interruptible(). No enough coffee yet this morning. Sorry for the confusion. Jeff Haran
Not sure how you came to that conclusion, but calling that function definitely can result in an attempt to do a context switch. That's what the "scheduling while atomic" is telling you. To my knowledge it is only safe to call this from process context.
No ISRs, no bottom halves.
Could be it's that "_interruptible" in the name that is misleading you. That means the wait can be interrupted and the call can return if the process doing the waiting is delivered a signal. It's got nothing to do with "interrupts" per se.
Jeff Haran
so I used in it an ISR but I'm getting 'BUG:scheduling while atomic' message. (I'm not sure it's coming from this) I'm looking for the exact cause but Is there any caveat when using wake_up_interruptible() in an ISR? (I found some drivers use it in ISR, some use it in work_struct)
I also read in http://www.slideshare.net/rampalliraj/tasklet-vs-work- queues?from_action=save that tasklet is not allowed to sleep but work is. (because tasklet is not in process context, but in bottom-half) I don't know if I have to move my wake_up_interruptible function to tasklet or work(queue) or even it matters to the current problem.
Any tip will be appreciated. Regards,
Chan _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-----Original Message----- From: Jeff Haran Sent: Tuesday, May 26, 2015 10:36 AM To: 'Chan Kim'; 'kernelnewbies@kernelnewbies.org' Subject: RE: wake_up_interruptible in ISR
-----Original Message----- From: Jeff Haran Sent: Tuesday, May 26, 2015 10:31 AM To: 'Chan Kim'; kernelnewbies@kernelnewbies.org Subject: RE: wake_up_interruptible in ISR
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@kernelnewbies.org] On Behalf Of Chan Kim Sent: Monday, May 25, 2015 10:23 PM To: kernelnewbies@kernelnewbies.org Subject: wake_up_interruptible in ISR
Hello,
I see in the source (linux ver 3.3) that wake_up_interruptible function doesn't sleep
Please ignore the below. I confused it with wake_event_interruptible().
Make that wait_event_interruptible(). I think I should just go back to bed. Jeff Haran
No enough coffee yet this morning. Sorry for the confusion.
Jeff Haran
Not sure how you came to that conclusion, but calling that function definitely can result in an attempt to do a context switch. That's what the "scheduling while atomic" is telling you. To my knowledge it is only safe to call this from process context.
No ISRs, no bottom halves.
Could be it's that "_interruptible" in the name that is misleading you. That means the wait can be interrupted and the call can return if the process doing the waiting is delivered a signal. It's got nothing to do with "interrupts" per se.
Jeff Haran
so I used in it an ISR but I'm getting 'BUG:scheduling while atomic' message. (I'm not sure it's coming from this) I'm looking for the exact cause but Is there any caveat when using wake_up_interruptible() in an ISR? (I found some drivers use it in ISR, some use it in work_struct)
I also read in http://www.slideshare.net/rampalliraj/tasklet-vs-work- queues?from_action=save that tasklet is not allowed to sleep but work is. (because tasklet is not in process context, but in bottom-half) I don't know if I have to move my wake_up_interruptible function to tasklet or work(queue) or even it matters to the current problem.
Any tip will be appreciated. Regards,
Chan _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Please ignore the below. I confused it with wake_event_interruptible().
Make that wait_event_interruptible(). I think I should just go back to bed.
Jeff Haran
Thanks, your reponse still helps me in making things clear. :) Hope I could be working with clear head today myself. Chan 보낸 사람 : "Jeff Haran" <Jeff.Haran@citrix.com> 보낸 날짜 : 2015-05-27 02:49:44 ( +09:00 ) 받는 사람 : 김찬 <ckim@etri.re.kr>, kernelnewbies@kernelnewbies.org <kernelnewbies@kernelnewbies.org> 참조 : 제목 : RE: wake_up_interruptible in ISR
-----Original Message----- From: Jeff Haran Sent: Tuesday, May 26, 2015 10:36 AM To: 'Chan Kim'; 'kernelnewbies@kernelnewbies.org' Subject: RE: wake_up_interruptible in ISR
-----Original Message----- From: Jeff Haran Sent: Tuesday, May 26, 2015 10:31 AM To: 'Chan Kim'; kernelnewbies@kernelnewbies.org Subject: RE: wake_up_interruptible in ISR
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@kernelnewbies.org] On Behalf Of Chan Kim Sent: Monday, May 25, 2015 10:23 PM To: kernelnewbies@kernelnewbies.org Subject: wake_up_interruptible in ISR
Hello,
I see in the source (linux ver 3.3) that wake_up_interruptible function doesn't sleep
Please ignore the below. I confused it with wake_event_interruptible().
Make that wait_event_interruptible(). I think I should just go back to bed. Jeff Haran
No enough coffee yet this morning. Sorry for the confusion.
Jeff Haran
Not sure how you came to that conclusion, but calling that function definitely can result in an attempt to do a context switch. That's what the "scheduling while atomic" is telling you. To my knowledge it is only safe to call this from process context.
No ISRs, no bottom halves.
Could be it's that "_interruptible" in the name that is misleading you. That means the wait can be interrupted and the call can return if the process doing the waiting is delivered a signal. It's got nothing to do with "interrupts" per se.
Jeff Haran
so I used in it an ISR but I'm getting 'BUG:scheduling while atomic' message. (I'm not sure it's coming from this) I'm looking for the exact cause but Is there any caveat when using wake_up_interruptible() in an ISR? (I found some drivers use it in ISR, some use it in work_struct)
I also read in http://www.slideshare.net/rampalliraj/tasklet-vs-work- queues?from_action=save that tasklet is not allowed to sleep but work is. (because tasklet is not in process context, but in bottom-half) I don't know if I have to move my wake_up_interruptible function to tasklet or work(queue) or even it matters to the current problem.
Any tip will be appreciated. Regards,
Chan _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
participants (3)
-
Chan Kim -
Jeff Haran -
김찬