tools/sched_ext: Add compat helper for scx_bpf_cpu_curr()
Introduce a compatibility helper that allows BPF schedulers to use
scx_bpf_cpu_curr() on older kernels.
Fixes: 20b158094a
("sched_ext: Introduce scx_bpf_cpu_curr()")
Cc: Christian Loehle <christian.loehle@arm.com>
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
5c48d88fe0
commit
a08b4dcad9
|
@ -104,7 +104,7 @@ bool scx_bpf_task_running(const struct task_struct *p) __ksym;
|
|||
s32 scx_bpf_task_cpu(const struct task_struct *p) __ksym;
|
||||
struct rq *scx_bpf_cpu_rq(s32 cpu) __ksym;
|
||||
struct rq *scx_bpf_locked_rq(void) __ksym;
|
||||
struct task_struct *scx_bpf_cpu_curr(s32 cpu) __ksym;
|
||||
struct task_struct *scx_bpf_cpu_curr(s32 cpu) __ksym __weak;
|
||||
struct cgroup *scx_bpf_task_cgroup(struct task_struct *p) __ksym __weak;
|
||||
u64 scx_bpf_now(void) __ksym __weak;
|
||||
void scx_bpf_events(struct scx_event_stats *events, size_t events__sz) __ksym __weak;
|
||||
|
|
|
@ -230,6 +230,23 @@ static inline bool __COMPAT_is_enq_cpu_selected(u64 enq_flags)
|
|||
scx_bpf_pick_any_cpu_node(cpus_allowed, node, flags) : \
|
||||
scx_bpf_pick_any_cpu(cpus_allowed, flags))
|
||||
|
||||
/*
|
||||
* v6.18: Add a helper to retrieve the current task running on a CPU.
|
||||
*
|
||||
* Keep this helper available until v6.20 for compatibility.
|
||||
*/
|
||||
static inline struct task_struct *__COMPAT_scx_bpf_cpu_curr(int cpu)
|
||||
{
|
||||
struct rq *rq;
|
||||
|
||||
if (bpf_ksym_exists(scx_bpf_cpu_curr))
|
||||
return scx_bpf_cpu_curr(cpu);
|
||||
|
||||
rq = scx_bpf_cpu_rq(cpu);
|
||||
|
||||
return rq ? rq->curr : NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Define sched_ext_ops. This may be expanded to define multiple variants for
|
||||
* backward compatibility. See compat.h::SCX_OPS_LOAD/ATTACH().
|
||||
|
|
Loading…
Reference in New Issue