Hi Mohammed,
On Thu, 2009-08-13 at 15:59 +0300, Mohammed Gamal wrote:
> Hi All,
> I know that kernel preemption exists in order to allow high-priority
> processes to interrupt the kernel if the kernel executes on relatively
> long code paths in order to improve latency times and process
> responsiveness. However, I am curious to know when and where the
> kernel gets preempted and at what code paths. I searched LXR for
> instances where preempt_schedule() gets called for instance but it
> seems it never gets explicitly called anywhere in the kernel (please
> CCIW). So, when exactly does the kernel get preempted? A pointer to
> the actual code path where that happens is appreciated.
>
> Regards,
> Mohammed
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to [email protected]
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
Because I had the indexer/search from Eclipse on into my embedded target kernel
anyway, I did a quick scan for "preempt_schedule".
With 2.6.29.4 kernel I get 35 matches :
- 4 in system.map
- 1 in module.symvers
- 3 in sched.c
Line 4681 : asmlinkage void __sched preempt_schedule(void)
Line 4712 : asmlinkage void __sched preempt_schedule_irq(void)
and just the exported symbol
- 2 in kprobes.c
the only relevant is :
static struct kprobe_blackpoint kprobe_blacklist[] = {
{"preempt_schedule",},
{NULL} /* Terminator */
- 2 in preempt.h
the relevant is macro :
#define preempt_check_resched() \
do { \
if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \
preempt_schedule(); \
} while (0)
- 2 in Documentation /ftrace.txt
Line 811 & 1043
- one for each entry in /arch/* .. eg. in arch/arm/kernel/entry-armv.S :
#ifdef CONFIG_PREEMPT
svc_preempt:
mov r8, lr
1: bl preempt_schedule_irq @ irq en/disable is done inside
ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS
tst r0, #_TIF_NEED_RESCHED
moveq pc, r8 @ go again
b 1b
#endif
Perhaps that'll give a hand.
HTH
--
Best regards,
Kris
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ