Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ebd7e7fc authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Ingo Molnar
Browse files

timers/posix-timers: Convert internals to use nsecs



Use the new nsec based cputime accessors as part of the whole cputime
conversion from cputime_t to nsecs.

Also convert posix-cpu-timers to use nsec based internal counters to
simplify it.

Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Wanpeng Li <wanpeng.li@hotmail.com>
Link: http://lkml.kernel.org/r/1485832191-26889-19-git-send-email-fweisbec@gmail.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 715eb7a9
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -8,19 +8,9 @@
#include <linux/alarmtimer.h>


static inline unsigned long long cputime_to_expires(cputime_t expires)
{
	return (__force unsigned long long)expires;
}

static inline cputime_t expires_to_cputime(unsigned long long expires)
{
	return (__force cputime_t)expires;
}

struct cpu_timer_list {
	struct list_head entry;
	unsigned long long expires, incr;
	u64 expires, incr;
	struct task_struct *task;
	int firing;
};
+3 −3
Original line number Diff line number Diff line
@@ -755,7 +755,7 @@ struct signal_struct {
	struct thread_group_cputimer cputimer;

	/* Earliest-expiration cache. */
	struct task_cputime_t cputime_expires;
	struct task_cputime cputime_expires;

#ifdef CONFIG_NO_HZ_FULL
	atomic_t tick_dep_mask;
@@ -1689,7 +1689,7 @@ struct task_struct {
/* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
	unsigned long min_flt, maj_flt;

	struct task_cputime_t cputime_expires;
	struct task_cputime cputime_expires;
	struct list_head cpu_timers[3];

/* process credentials */
@@ -3527,7 +3527,7 @@ static __always_inline bool need_resched(void)
 * Thread group CPU time accounting.
 */
void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times);
void thread_group_cputimer(struct task_struct *tsk, struct task_cputime_t *times);
void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times);

static inline void thread_group_cputime_t(struct task_struct *tsk,
					  struct task_cputime_t *cputime)
+1 −1
Original line number Diff line number Diff line
@@ -1313,7 +1313,7 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig)

	cpu_limit = READ_ONCE(sig->rlim[RLIMIT_CPU].rlim_cur);
	if (cpu_limit != RLIM_INFINITY) {
		sig->cputime_expires.prof_exp = secs_to_cputime(cpu_limit);
		sig->cputime_expires.prof_exp = cpu_limit * NSEC_PER_SEC;
		sig->cputimer.running = true;
	}

+3 −3
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ void account_user_time(struct task_struct *p, cputime_t cputime)

	/* Add user time to process. */
	p->utime += cputime_to_nsecs(cputime);
	account_group_user_time(p, cputime);
	account_group_user_time(p, cputime_to_nsecs(cputime));

	index = (task_nice(p) > 0) ? CPUTIME_NICE : CPUTIME_USER;

@@ -144,7 +144,7 @@ void account_guest_time(struct task_struct *p, cputime_t cputime)

	/* Add guest time to process. */
	p->utime += cputime_to_nsecs(cputime);
	account_group_user_time(p, cputime);
	account_group_user_time(p, cputime_to_nsecs(cputime));
	p->gtime += cputime_to_nsecs(cputime);

	/* Add guest time to cpustat. */
@@ -168,7 +168,7 @@ void account_system_index_time(struct task_struct *p,
{
	/* Add system time to process. */
	p->stime += cputime_to_nsecs(cputime);
	account_group_system_time(p, cputime);
	account_group_system_time(p, cputime_to_nsecs(cputime));

	/* Add system time to cpustat. */
	task_group_account_field(p, index, cputime_to_nsecs(cputime));
+2 −2
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ static inline bool cputimer_running(struct task_struct *tsk)
 * running CPU and update the utime field there.
 */
static inline void account_group_user_time(struct task_struct *tsk,
					   cputime_t cputime)
					   u64 cputime)
{
	struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;

@@ -237,7 +237,7 @@ static inline void account_group_user_time(struct task_struct *tsk,
 * running CPU and update the stime field there.
 */
static inline void account_group_system_time(struct task_struct *tsk,
					     cputime_t cputime)
					     u64 cputime)
{
	struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;

Loading