diff options
Diffstat (limited to 'kernel/posix-cpu-timers.c')
| -rw-r--r-- | kernel/posix-cpu-timers.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 8e5d9a68b022..bece7c0b67b2 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
| @@ -18,7 +18,7 @@ void update_rlimit_cpu(unsigned long rlim_new) | |||
| 18 | 18 | ||
| 19 | cputime = secs_to_cputime(rlim_new); | 19 | cputime = secs_to_cputime(rlim_new); |
| 20 | if (cputime_eq(current->signal->it_prof_expires, cputime_zero) || | 20 | if (cputime_eq(current->signal->it_prof_expires, cputime_zero) || |
| 21 | cputime_lt(current->signal->it_prof_expires, cputime)) { | 21 | cputime_gt(current->signal->it_prof_expires, cputime)) { |
| 22 | spin_lock_irq(¤t->sighand->siglock); | 22 | spin_lock_irq(¤t->sighand->siglock); |
| 23 | set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); | 23 | set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); |
| 24 | spin_unlock_irq(¤t->sighand->siglock); | 24 | spin_unlock_irq(¤t->sighand->siglock); |
| @@ -224,7 +224,7 @@ static int cpu_clock_sample(const clockid_t which_clock, struct task_struct *p, | |||
| 224 | cpu->cpu = virt_ticks(p); | 224 | cpu->cpu = virt_ticks(p); |
| 225 | break; | 225 | break; |
| 226 | case CPUCLOCK_SCHED: | 226 | case CPUCLOCK_SCHED: |
| 227 | cpu->sched = p->se.sum_exec_runtime + task_delta_exec(p); | 227 | cpu->sched = task_sched_runtime(p); |
| 228 | break; | 228 | break; |
| 229 | } | 229 | } |
| 230 | return 0; | 230 | return 0; |
| @@ -305,18 +305,19 @@ static int cpu_clock_sample_group(const clockid_t which_clock, | |||
| 305 | { | 305 | { |
| 306 | struct task_cputime cputime; | 306 | struct task_cputime cputime; |
| 307 | 307 | ||
| 308 | thread_group_cputime(p, &cputime); | ||
| 309 | switch (CPUCLOCK_WHICH(which_clock)) { | 308 | switch (CPUCLOCK_WHICH(which_clock)) { |
| 310 | default: | 309 | default: |
| 311 | return -EINVAL; | 310 | return -EINVAL; |
| 312 | case CPUCLOCK_PROF: | 311 | case CPUCLOCK_PROF: |
| 312 | thread_group_cputime(p, &cputime); | ||
| 313 | cpu->cpu = cputime_add(cputime.utime, cputime.stime); | 313 | cpu->cpu = cputime_add(cputime.utime, cputime.stime); |
| 314 | break; | 314 | break; |
| 315 | case CPUCLOCK_VIRT: | 315 | case CPUCLOCK_VIRT: |
| 316 | thread_group_cputime(p, &cputime); | ||
| 316 | cpu->cpu = cputime.utime; | 317 | cpu->cpu = cputime.utime; |
| 317 | break; | 318 | break; |
| 318 | case CPUCLOCK_SCHED: | 319 | case CPUCLOCK_SCHED: |
| 319 | cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p); | 320 | cpu->sched = thread_group_sched_runtime(p); |
| 320 | break; | 321 | break; |
| 321 | } | 322 | } |
| 322 | return 0; | 323 | return 0; |
| @@ -1419,19 +1420,19 @@ void run_posix_cpu_timers(struct task_struct *tsk) | |||
| 1419 | * timer call will interfere. | 1420 | * timer call will interfere. |
| 1420 | */ | 1421 | */ |
| 1421 | list_for_each_entry_safe(timer, next, &firing, it.cpu.entry) { | 1422 | list_for_each_entry_safe(timer, next, &firing, it.cpu.entry) { |
| 1422 | int firing; | 1423 | int cpu_firing; |
| 1424 | |||
| 1423 | spin_lock(&timer->it_lock); | 1425 | spin_lock(&timer->it_lock); |
| 1424 | list_del_init(&timer->it.cpu.entry); | 1426 | list_del_init(&timer->it.cpu.entry); |
| 1425 | firing = timer->it.cpu.firing; | 1427 | cpu_firing = timer->it.cpu.firing; |
| 1426 | timer->it.cpu.firing = 0; | 1428 | timer->it.cpu.firing = 0; |
| 1427 | /* | 1429 | /* |
| 1428 | * The firing flag is -1 if we collided with a reset | 1430 | * The firing flag is -1 if we collided with a reset |
| 1429 | * of the timer, which already reported this | 1431 | * of the timer, which already reported this |
| 1430 | * almost-firing as an overrun. So don't generate an event. | 1432 | * almost-firing as an overrun. So don't generate an event. |
| 1431 | */ | 1433 | */ |
| 1432 | if (likely(firing >= 0)) { | 1434 | if (likely(cpu_firing >= 0)) |
| 1433 | cpu_timer_fire(timer); | 1435 | cpu_timer_fire(timer); |
| 1434 | } | ||
| 1435 | spin_unlock(&timer->it_lock); | 1436 | spin_unlock(&timer->it_lock); |
| 1436 | } | 1437 | } |
| 1437 | } | 1438 | } |
