diff options
Diffstat (limited to 'kernel/sched/sched.h')
| -rw-r--r-- | kernel/sched/sched.h | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index ebb4b3c3ece7..614170d9b1aa 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -856,6 +856,7 @@ struct rq {  	struct sched_avg	avg_rt;  	struct sched_avg	avg_dl;  #if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING) +#define HAVE_SCHED_AVG_IRQ  	struct sched_avg	avg_irq;  #endif  	u64			idle_stamp; @@ -2210,17 +2211,32 @@ static inline unsigned long cpu_util_rt(struct rq *rq)  {  	return READ_ONCE(rq->avg_rt.util_avg);  } +#endif -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING) +#ifdef HAVE_SCHED_AVG_IRQ  static inline unsigned long cpu_util_irq(struct rq *rq)  {  	return rq->avg_irq.util_avg;  } + +static inline +unsigned long scale_irq_capacity(unsigned long util, unsigned long irq, unsigned long max) +{ +	util *= (max - irq); +	util /= max; + +	return util; + +}  #else  static inline unsigned long cpu_util_irq(struct rq *rq)  {  	return 0;  } -#endif +static inline +unsigned long scale_irq_capacity(unsigned long util, unsigned long irq, unsigned long max) +{ +	return util; +}  #endif | 
