From: Rafał M. <za...@gm...> - 2010-03-02 20:32:46
|
W dniu 1 marca 2010 17:37 użytkownik Michel Dänzer <mi...@da...> napisał: > On Sat, 2010-02-27 at 10:33 +0100, Rafał Miłecki wrote: >> W dniu 26 lutego 2010 20:01 użytkownik Ville Syrjälä <sy...@sc...> napisał: >> > Disabling the condition check doesn't make sense. >> > >> > You could use a completion. >> > >> > init_completion(vbl_irq); >> > enable_vbl_irq(); >> > wait_for_completion(vbl_irq); >> > disable_vbl_irq(); >> > and call complete(vbl_irq) in the interrupt handler. >> > >> > The same would of course work with just some flag or counter >> > and a wait queue. >> >> Ouch, I can see it gone bad already. >> >> Firstly I simply just wanted to avoid condition in wait_event_*. It >> looked unnecessary as I got interrupts (signals). > > So this code runs in user process context? If so, it should return to > userspace ASAP on signal receipt, otherwise e.g. smoothness of X mouse > movement may suffer. > > If that's a problem, then maybe the code should run in a different > context, e.g. a tasklet or some kind of worker kernel thread. It has nothing to do with userspace. Please see my previous description: W dniu 26 lutego 2010 13:16 użytkownik Rafał Miłecki <za...@gm...> napisał: > W dniu 26 lutego 2010 12:55 użytkownik Thomas Gleixner >> Sleeping in the timer handler ? In which context runs this timer handler ? > > We have our struct delayed_work which we first init and then we use > "queue_delayed_work" to start this "timer". So it's not real-real > timer as struct timer_list. > > So this is actually delayed_work handler. Sorry (again) for my bad naming. It's delayed_work. -- Rafał |