| /* Reduced from linux-5.10.162's kernel/sched/fair.c, |
| with !CONFIG_FAIR_GROUP_SCHED. */ |
| |
| #define NULL ((void*)0) |
| |
| struct load_weight |
| { |
| unsigned long weight; |
| /* [...snip...] */ |
| }; |
| |
| struct sched_entity |
| { |
| struct load_weight load; |
| /* [...snip...] */ |
| unsigned int on_rq; |
| /* [...snip...] */ |
| }; |
| |
| struct cfs_rq |
| { |
| /* [...snip...] */ |
| unsigned int nr_running; |
| /* [...snip...] */ |
| }; |
| |
| extern int |
| __calc_delta(int delta_exec, unsigned long weight /* [...snip...] */); |
| |
| /* !CONFIG_FAIR_GROUP_SCHED */ |
| #define for_each_sched_entity(se) \ |
| for (; se; se = (struct sched_entity *)NULL) |
| |
| extern struct cfs_rq* |
| cfs_rq_of(struct sched_entity* se); |
| |
| extern int |
| __sched_period(unsigned long nr_running); |
| |
| int |
| sched_slice(struct cfs_rq* cfs_rq, struct sched_entity* se) |
| { |
| unsigned int nr_running = cfs_rq->nr_running; |
| int slice; |
| |
| /* [...snip...] */ |
| |
| slice = __sched_period(nr_running + !se->on_rq); |
| |
| for_each_sched_entity(se) { |
| /* [...snip...] */ |
| cfs_rq = cfs_rq_of(se); |
| /* [...snip...] */ |
| slice = __calc_delta(slice, se->load.weight); |
| } |
| |
| /* [...snip...] */ |
| |
| return slice; |
| } |