Messages in this thread | | | Date | Mon, 7 Nov 2005 16:53:42 +0500 | From | Fawad Lateef <> | Subject | Re: [question] I doublt on timer interrput. |
| |
On 11/7/05, liyu <liyu@ccoss.com.cn> wrote: > > I have one question about timer interrupt (i386 architecture). > > As we known, the timer emit HZ times interrputs per second, > and in i386. The interrupt handler will call scheduler_tick() > each time (on i386 at least, both enable or disable APIC). > > On my Celeron machine(IOW, only one CPU, not SMP/SMT), I defined > a global int variable 'tick_count' in kernel/sched.c, and add one line > of code like follow in scheduler_tick(): > > ++tick_count; > > but I found it is not same with content of the /proc/interrupts, > and the differennt between them is not little. > > I can not understand why that is. > > Any useful idea. > >
What I found in the kernel code is that scheduler_tick is called from two locations in the kernel (2.6.14-mm1) code (i386).
1) from kernel/timer.c in update_process_times which is called from arch/i386/kernel/apic.c and its calling depends on the CONFIG_SMP defined or not (see http://sosdg.org/~coywolf/lxr/source/arch/i386/kernel/apic.c#L1160) and as you don't have CONFIG_SMP enabled so its won't be called from here.
2) from sched_fork function in kernel/sched.c (http://sosdg.org/~coywolf/lxr/source/kernel/sched.c#L1414) and I think its called when newly forked process setup is going to be performed, and I think as from here scheduler_tick is called in your case, so you are getting different value for your variable tick_count
scheduler_tick might be called from somewhere else which I am missing so please CMIIW !
-- Fawad Lateef - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |