diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-09 18:27:54 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-09 18:27:54 -0500 |
| commit | a70a93229943c177f0062490b4f8e44be4cef685 (patch) | |
| tree | 24cc6f087307f18cda2f55ad91c7649dd5388b86 /kernel/timer.c | |
| parent | a80b824f0b63fa3a8c269903828beb0837d738e7 (diff) | |
| parent | e6fe6649b4ec11aa3075e394b4d8743eebe1f64c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched
* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched:
sched: proper prototype for kernel/sched.c:migration_init()
sched: avoid large irq-latencies in smp-balancing
sched: fix copy_namespace() <-> sched_fork() dependency in do_fork
sched: clean up the wakeup preempt check, #2
sched: clean up the wakeup preempt check
sched: wakeup preemption fix
sched: remove PREEMPT_RESTRICT
sched: turn off PREEMPT_RESTRICT
KVM: fix !SMP build error
x86: make nmi_cpu_busy() always defined
x86: make ipi_handler() always defined
sched: cleanup, use NSEC_PER_MSEC and NSEC_PER_SEC
sched: reintroduce SMP tunings again
sched: restore deterministic CPU accounting on powerpc
sched: fix delay accounting regression
sched: reintroduce the sched_min_granularity tunable
sched: documentation: place_entity() comments
sched: fix vslice
Diffstat (limited to 'kernel/timer.c')
| -rw-r--r-- | kernel/timer.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 00e44e2afd67..a05817c021d6 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
| @@ -817,6 +817,19 @@ unsigned long next_timer_interrupt(void) | |||
| 817 | 817 | ||
| 818 | #endif | 818 | #endif |
| 819 | 819 | ||
| 820 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING | ||
| 821 | void account_process_tick(struct task_struct *p, int user_tick) | ||
| 822 | { | ||
| 823 | if (user_tick) { | ||
| 824 | account_user_time(p, jiffies_to_cputime(1)); | ||
| 825 | account_user_time_scaled(p, jiffies_to_cputime(1)); | ||
| 826 | } else { | ||
| 827 | account_system_time(p, HARDIRQ_OFFSET, jiffies_to_cputime(1)); | ||
| 828 | account_system_time_scaled(p, jiffies_to_cputime(1)); | ||
| 829 | } | ||
| 830 | } | ||
| 831 | #endif | ||
| 832 | |||
| 820 | /* | 833 | /* |
| 821 | * Called from the timer interrupt handler to charge one tick to the current | 834 | * Called from the timer interrupt handler to charge one tick to the current |
| 822 | * process. user_tick is 1 if the tick is user time, 0 for system. | 835 | * process. user_tick is 1 if the tick is user time, 0 for system. |
| @@ -827,13 +840,7 @@ void update_process_times(int user_tick) | |||
| 827 | int cpu = smp_processor_id(); | 840 | int cpu = smp_processor_id(); |
| 828 | 841 | ||
| 829 | /* Note: this timer irq context must be accounted for as well. */ | 842 | /* Note: this timer irq context must be accounted for as well. */ |
| 830 | if (user_tick) { | 843 | account_process_tick(p, user_tick); |
| 831 | account_user_time(p, jiffies_to_cputime(1)); | ||
| 832 | account_user_time_scaled(p, jiffies_to_cputime(1)); | ||
| 833 | } else { | ||
| 834 | account_system_time(p, HARDIRQ_OFFSET, jiffies_to_cputime(1)); | ||
| 835 | account_system_time_scaled(p, jiffies_to_cputime(1)); | ||
| 836 | } | ||
| 837 | run_local_timers(); | 844 | run_local_timers(); |
| 838 | if (rcu_pending(cpu)) | 845 | if (rcu_pending(cpu)) |
| 839 | rcu_check_callbacks(cpu, user_tick); | 846 | rcu_check_callbacks(cpu, user_tick); |
