[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[microblaze-uclinux] reschedule problem
Hi,
Do you have an idea or example code how an ISR in kernel 2.6 can force a reschedule immediately after it has finished? In good old kernel 2.4 times I used current->need_resched=1 to do so.
My problem is, this happens in my self-written driver:
The interrupt service function mydriver_ISR() calls wake_up_interruptable(&queue) but I see the appropriate awaking of the sleeping user space thread at mydriver_poll() just more than 5 milliseconds later. Probably on the next timer-IRQ that triggers the scheduler?
I tried to call set_current_state(TASK_INTERRUPTABLE) before poll_wait(..,&queue,wait) in function mydriver_poll(), and to call set_tsk_need_resched(current) in the ISR, but without any improvement of that bad wakeup-latency.
With my tracing to a log buffer in memory (means: no use of printk), I can see that no other thread is scheduled next than my desired user-space thread.
Do you have any idea?
Cheers,
Falk
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/