diff options
Diffstat (limited to 'kernel/posix-cpu-timers.c')
| -rw-r--r-- | kernel/posix-cpu-timers.c | 60 | 
1 files changed, 30 insertions, 30 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 2313a4cc14e..e976e505648 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c @@ -681,6 +681,33 @@ static void cpu_timer_fire(struct k_itimer *timer)  }  /* + * Sample a process (thread group) timer for the given group_leader task. + * Must be called with tasklist_lock held for reading. + */ +static int cpu_timer_sample_group(const clockid_t which_clock, +				  struct task_struct *p, +				  union cpu_time_count *cpu) +{ +	struct task_cputime cputime; + +	thread_group_cputimer(p, &cputime); +	switch (CPUCLOCK_WHICH(which_clock)) { +	default: +		return -EINVAL; +	case CPUCLOCK_PROF: +		cpu->cpu = cputime_add(cputime.utime, cputime.stime); +		break; +	case CPUCLOCK_VIRT: +		cpu->cpu = cputime.utime; +		break; +	case CPUCLOCK_SCHED: +		cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p); +		break; +	} +	return 0; +} + +/*   * Guts of sys_timer_settime for CPU timers.   * This is called with the timer locked and interrupts disabled.   * If we return TIMER_RETRY, it's necessary to release the timer's lock @@ -741,7 +768,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,  	if (CPUCLOCK_PERTHREAD(timer->it_clock)) {  		cpu_clock_sample(timer->it_clock, p, &val);  	} else { -		cpu_clock_sample_group(timer->it_clock, p, &val); +		cpu_timer_sample_group(timer->it_clock, p, &val);  	}  	if (old) { @@ -889,7 +916,7 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp)  			read_unlock(&tasklist_lock);  			goto dead;  		} else { -			cpu_clock_sample_group(timer->it_clock, p, &now); +			cpu_timer_sample_group(timer->it_clock, p, &now);  			clear_dead = (unlikely(p->exit_state) &&  				      thread_group_empty(p));  		} @@ -1244,7 +1271,7 @@ void posix_cpu_timer_schedule(struct k_itimer *timer)  			clear_dead_task(timer, now);  			goto out_unlock;  		} -		cpu_clock_sample_group(timer->it_clock, p, &now); +		cpu_timer_sample_group(timer->it_clock, p, &now);  		bump_cpu_timer(timer, now);  		/* Leave the tasklist_lock locked for the call below.  */  	} @@ -1409,33 +1436,6 @@ void run_posix_cpu_timers(struct task_struct *tsk)  }  /* - * Sample a process (thread group) timer for the given group_leader task. - * Must be called with tasklist_lock held for reading. - */ -static int cpu_timer_sample_group(const clockid_t which_clock, -				  struct task_struct *p, -				  union cpu_time_count *cpu) -{ -	struct task_cputime cputime; - -	thread_group_cputimer(p, &cputime); -	switch (CPUCLOCK_WHICH(which_clock)) { -	default: -		return -EINVAL; -	case CPUCLOCK_PROF: -		cpu->cpu = cputime_add(cputime.utime, cputime.stime); -		break; -	case CPUCLOCK_VIRT: -		cpu->cpu = cputime.utime; -		break; -	case CPUCLOCK_SCHED: -		cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p); -		break; -	} -	return 0; -} - -/*   * Set one of the process-wide special case CPU timers.   * The tsk->sighand->siglock must be held by the caller.   * The *newval argument is relative and we update it to be absolute, *oldval  |