On Wed, 17 Jun 2009, Thomas Gleixner wrote: > On Tue, 16 Jun 2009, Uwe Kleine-König wrote: > > On Tue, Jun 16, 2009 at 07:59:28AM +0000, Martin Shepherd wrote: > > > Suresh Kumar SHUKLA st.com> writes: > > > > // get IRQ descriptor from IRQ, it contains pid > > > > desc = &irq_desc[IRQ_BASIC_TIMER_3_1]; > > > > > > That's a very useful clue. I was thinking that I would have to walk the process > > > tree to find the thread by name. Following up on this clue, it appears as though > > > in kernel 2.6.29.4 I should be able to use desc=irq_to_desc(irq) to look up the > > > IRQ descriptor, then use pid=get_task_pid(desc->thread), to get the PID of the > > > IRQ thread, then use sys_sched_setscheduler(pid,...) to change its priority. > > > I'll try that out in the morning. > > I wouldn't recommend calling sys_sched_setscheduler from kernel space. > > That's the userspace API and you need to pass a __user pointer as third > > argument. > > > > The right way is to do this change from userspace. > > What a nonsense. Care to look at the code ? > > The irq/softirq threads call sys_sched_setscheduler() already to > change their priorities. More awake, it should be changed for correctness sake. :) > The right way to do this is to have an interface > set_irq_thread_prio(irq, prio) This still stands, if we need a way to change the prio from the driver. But the more I think about it should be done from user space. Thanks, tglx