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

Reply via email to