12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifdef CONFIG_SMP
- int __update_load_avg_blocked_se(u64 now, int cpu, struct sched_entity *se);
- int __update_load_avg_se(u64 now, int cpu, struct cfs_rq *cfs_rq, struct sched_entity *se);
- int __update_load_avg_cfs_rq(u64 now, int cpu, struct cfs_rq *cfs_rq);
- int update_rt_rq_load_avg(u64 now, struct rq *rq, int running);
- int update_dl_rq_load_avg(u64 now, struct rq *rq, int running);
- #ifdef CONFIG_HAVE_SCHED_AVG_IRQ
- int update_irq_load_avg(struct rq *rq, u64 running);
- #else
- static inline int
- update_irq_load_avg(struct rq *rq, u64 running)
- {
- return 0;
- }
- #endif
- /*
- * When a task is dequeued, its estimated utilization should not be update if
- * its util_avg has not been updated at least once.
- * This flag is used to synchronize util_avg updates with util_est updates.
- * We map this information into the LSB bit of the utilization saved at
- * dequeue time (i.e. util_est.dequeued).
- */
- #define UTIL_AVG_UNCHANGED 0x1
- static inline void cfs_se_util_change(struct sched_avg *avg)
- {
- unsigned int enqueued;
- if (!sched_feat(UTIL_EST))
- return;
- /* Avoid store if the flag has been already set */
- enqueued = avg->util_est.enqueued;
- if (!(enqueued & UTIL_AVG_UNCHANGED))
- return;
- /* Reset flag to report util_avg has been updated */
- enqueued &= ~UTIL_AVG_UNCHANGED;
- WRITE_ONCE(avg->util_est.enqueued, enqueued);
- }
- #else
- static inline int
- update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq)
- {
- return 0;
- }
- static inline int
- update_rt_rq_load_avg(u64 now, struct rq *rq, int running)
- {
- return 0;
- }
- static inline int
- update_dl_rq_load_avg(u64 now, struct rq *rq, int running)
- {
- return 0;
- }
- static inline int
- update_irq_load_avg(struct rq *rq, u64 running)
- {
- return 0;
- }
- #endif
|