lkml.org 
[lkml]   [2019]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch V2 25/38] posix-cpu-timers: Provide array based sample functions
    Instead of using task_cputime and doing the addition of utime and stime at
    all call sites, it's way simpler to have a sample array which allows
    indexed based checks against the expiry cache array.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    kernel/time/posix-cpu-timers.c | 26 ++++++++++++++++++++++++++
    1 file changed, 26 insertions(+)

    --- a/kernel/time/posix-cpu-timers.c
    +++ b/kernel/time/posix-cpu-timers.c
    @@ -202,6 +202,32 @@ static u64 cpu_clock_sample(const clocki
    return 0;
    }

    +static inline void store_samples(u64 *samples, u64 stime, u64 utime, u64 rtime)
    +{
    + samples[CPUCLOCK_PROF] = stime + utime;
    + samples[CPUCLOCK_VIRT] = utime;
    + samples[CPUCLOCK_SCHED] = rtime;
    +}
    +
    +static void task_sample_cputime(struct task_struct *p, u64 *samples)
    +{
    + u64 stime, utime;
    +
    + task_cputime(p, &utime, &stime);
    + store_samples(samples, stime, utime, p->se.sum_exec_runtime);
    +}
    +
    +static void proc_sample_cputime_atomic(struct task_cputime_atomic *at,
    + u64 *samples)
    +{
    + u64 stime, utime, rtime;
    +
    + utime = atomic64_read(&at->utime);
    + stime = atomic64_read(&at->stime);
    + rtime = atomic64_read(&at->sum_exec_runtime);
    + store_samples(samples, stime, utime, rtime);
    +}
    +
    /*
    * Set cputime to sum_cputime if sum_cputime > cputime. Use cmpxchg
    * to avoid race conditions with concurrent updates to cputime.

    \
     
     \ /
      Last update: 2019-08-21 21:31    [W:4.080 / U:0.260 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site