From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Tue, 20 Feb 2024 01:20:52 +0000 Subject: [PATCH] add new system file --- kernel/kernel/sched/sched.h | 125 +++++++++++++++++------------------------ 1 files changed, 52 insertions(+), 73 deletions(-) diff --git a/kernel/kernel/sched/sched.h b/kernel/kernel/sched/sched.h index 61e804c..e2eef69 100644 --- a/kernel/kernel/sched/sched.h +++ b/kernel/kernel/sched/sched.h @@ -351,7 +351,7 @@ extern bool __checkparam_dl(const struct sched_attr *attr); extern bool dl_param_changed(struct task_struct *p, const struct sched_attr *attr); extern int dl_cpuset_cpumask_can_shrink(const struct cpumask *cur, const struct cpumask *trial); -extern int dl_cpu_busy(int cpu, struct task_struct *p); +extern int dl_bw_check_overflow(int cpu); #ifdef CONFIG_CGROUP_SCHED @@ -996,7 +996,6 @@ unsigned long cpu_capacity_orig; struct callback_head *balance_callback; - unsigned char balance_flags; unsigned char nohz_idle_balance; unsigned char idle_balance; @@ -1027,10 +1026,6 @@ /* This is used to determine avg_idle's max value */ u64 max_idle_balance_cost; - -#ifdef CONFIG_HOTPLUG_CPU - struct rcuwait hotplug_wait; -#endif #endif /* CONFIG_SMP */ #ifdef CONFIG_IRQ_TIME_ACCOUNTING @@ -1082,12 +1077,6 @@ /* Must be inspected within a rcu lock section */ struct cpuidle_state *idle_state; #endif - -#ifdef CONFIG_SMP - unsigned int nr_pinned; -#endif - unsigned int push_busy; - struct cpu_stop_work push_work; ANDROID_VENDOR_DATA_ARRAY(1, 96); ANDROID_OEM_DATA_ARRAY(1, 16); @@ -1286,9 +1275,6 @@ rq->clock_update_flags &= (RQCF_REQ_SKIP|RQCF_ACT_SKIP); rf->clock_update_flags = 0; #endif -#ifdef CONFIG_SMP - SCHED_WARN_ON(rq->balance_callback); -#endif } static inline void rq_unpin_lock(struct rq *rq, struct rq_flags *rf) @@ -1448,9 +1434,6 @@ #ifdef CONFIG_SMP -#define BALANCE_WORK 0x01 -#define BALANCE_PUSH 0x02 - extern int migrate_swap(struct task_struct *p, struct task_struct *t, int cpu, int scpu); static inline void @@ -1460,13 +1443,12 @@ { lockdep_assert_held(&rq->lock); - if (unlikely(head->next || (rq->balance_flags & BALANCE_PUSH))) + if (unlikely(head->next)) return; head->func = (void (*)(struct callback_head *))func; head->next = rq->balance_callback; rq->balance_callback = head; - rq->balance_flags |= BALANCE_WORK; } #define rcu_dereference_check_sched_domain(p) \ @@ -1795,7 +1777,6 @@ #define WF_FORK 0x02 /* Child wakeup after fork */ #define WF_MIGRATED 0x04 /* Internal use, task got migrated */ #define WF_ON_CPU 0x08 /* Wakee is on_cpu */ -#define WF_LOCK_SLEEPER 0x10 /* Wakeup spinlock "sleeper" */ #define WF_ANDROID_VENDOR 0x1000 /* Vendor specific for Android */ /* @@ -1880,13 +1861,10 @@ void (*task_woken)(struct rq *this_rq, struct task_struct *task); void (*set_cpus_allowed)(struct task_struct *p, - const struct cpumask *newmask, - u32 flags); + const struct cpumask *newmask); void (*rq_online)(struct rq *rq); void (*rq_offline)(struct rq *rq); - - struct rq *(*find_lock_rq)(struct task_struct *p, struct rq *rq); #endif void (*task_tick)(struct rq *rq, struct task_struct *p, int queued); @@ -1970,38 +1948,13 @@ extern struct task_struct *pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf); extern struct task_struct *pick_next_task_idle(struct rq *rq); -#define SCA_CHECK 0x01 -#define SCA_MIGRATE_DISABLE 0x02 -#define SCA_MIGRATE_ENABLE 0x04 - #ifdef CONFIG_SMP extern void update_group_capacity(struct sched_domain *sd, int cpu); extern void trigger_load_balance(struct rq *rq); -extern void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask, u32 flags); - -static inline struct task_struct *get_push_task(struct rq *rq) -{ - struct task_struct *p = rq->curr; - - lockdep_assert_held(&rq->lock); - - if (rq->push_busy) - return NULL; - - if (p->nr_cpus_allowed == 1) - return NULL; - - if (p->migration_disabled) - return NULL; - - rq->push_busy = true; - return get_task_struct(p); -} - -extern int push_cpu_stop(void *arg); +extern void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_mask); extern unsigned long __read_mostly max_load_balance_interval; #endif @@ -2045,15 +1998,6 @@ extern void resched_curr(struct rq *rq); extern void resched_cpu(int cpu); - -#ifdef CONFIG_PREEMPT_LAZY -extern void resched_curr_lazy(struct rq *rq); -#else -static inline void resched_curr_lazy(struct rq *rq) -{ - resched_curr(rq); -} -#endif extern struct rt_bandwidth def_rt_bandwidth; extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); @@ -2417,16 +2361,6 @@ static inline void nohz_balance_exit_idle(struct rq *rq) { } #endif -#define MDF_PUSH 0x01 - -static inline bool is_migration_disabled(struct task_struct *p) -{ -#ifdef CONFIG_SMP - return p->migration_disabled; -#else - return false; -#endif -} #ifdef CONFIG_SMP static inline @@ -2525,6 +2459,23 @@ #ifdef CONFIG_UCLAMP_TASK unsigned long uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id); +static inline unsigned long uclamp_rq_get(struct rq *rq, + enum uclamp_id clamp_id) +{ + return READ_ONCE(rq->uclamp[clamp_id].value); +} + +static inline void uclamp_rq_set(struct rq *rq, enum uclamp_id clamp_id, + unsigned int value) +{ + WRITE_ONCE(rq->uclamp[clamp_id].value, value); +} + +static inline bool uclamp_rq_is_idle(struct rq *rq) +{ + return rq->uclamp_flags & UCLAMP_FLAG_IDLE; +} + /** * uclamp_rq_util_with - clamp @util with @rq and @p effective uclamp values. * @rq: The rq to clamp against. Must not be NULL. @@ -2560,12 +2511,12 @@ * Ignore last runnable task's max clamp, as this task will * reset it. Similarly, no need to read the rq's min clamp. */ - if (rq->uclamp_flags & UCLAMP_FLAG_IDLE) + if (uclamp_rq_is_idle(rq)) goto out; } - min_util = max_t(unsigned long, min_util, READ_ONCE(rq->uclamp[UCLAMP_MIN].value)); - max_util = max_t(unsigned long, max_util, READ_ONCE(rq->uclamp[UCLAMP_MAX].value)); + min_util = max_t(unsigned long, min_util, uclamp_rq_get(rq, UCLAMP_MIN)); + max_util = max_t(unsigned long, max_util, uclamp_rq_get(rq, UCLAMP_MAX)); out: /* * Since CPU's {min,max}_util clamps are MAX aggregated considering @@ -2596,6 +2547,15 @@ return static_branch_likely(&sched_uclamp_used); } #else /* CONFIG_UCLAMP_TASK */ +static inline unsigned long uclamp_eff_value(struct task_struct *p, + enum uclamp_id clamp_id) +{ + if (clamp_id == UCLAMP_MIN) + return 0; + + return SCHED_CAPACITY_SCALE; +} + static inline unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util, struct task_struct *p) @@ -2612,6 +2572,25 @@ { return false; } + +static inline unsigned long uclamp_rq_get(struct rq *rq, + enum uclamp_id clamp_id) +{ + if (clamp_id == UCLAMP_MIN) + return 0; + + return SCHED_CAPACITY_SCALE; +} + +static inline void uclamp_rq_set(struct rq *rq, enum uclamp_id clamp_id, + unsigned int value) +{ +} + +static inline bool uclamp_rq_is_idle(struct rq *rq) +{ + return false; +} #endif /* CONFIG_UCLAMP_TASK */ #ifdef CONFIG_UCLAMP_TASK_GROUP -- Gitblit v1.6.2