mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
tools/sched_ext: Add scx_bpf_sub_dispatch() compat wrapper
Add a transparent compatibility wrapper for the scx_bpf_sub_dispatch() kfunc in compat.bpf.h. This allows BPF schedulers using the sub-sched dispatch feature to build and run on older kernels that lack the kfunc. To avoid requiring code changes in individual schedulers, the transparent wrapper pattern is used instead of a __COMPAT prefix. The kfunc is declared with a ___compat suffix, while the static inline wrapper retains the original scx_bpf_sub_dispatch() name. When the kfunc is unavailable, the wrapper safely falls back to returning false. This is acceptable because the dispatch path cannot do anything useful without underlying sub-sched support anyway. Tested scx_qmap on v6.14 successfully. Signed-off-by: Cheng-Yang Chou <yphbchou0911@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
committed by
Tejun Heo
parent
c50dcf5331
commit
cb251eae7b
@@ -101,7 +101,6 @@ struct rq *scx_bpf_locked_rq(void) __ksym;
|
||||
struct task_struct *scx_bpf_cpu_curr(s32 cpu) __ksym __weak;
|
||||
u64 scx_bpf_now(void) __ksym __weak;
|
||||
void scx_bpf_events(struct scx_event_stats *events, size_t events__sz) __ksym __weak;
|
||||
bool scx_bpf_sub_dispatch(u64 cgroup_id) __ksym __weak;
|
||||
|
||||
/*
|
||||
* Use the following as @it__iter when calling scx_bpf_dsq_move[_vtime]() from
|
||||
|
||||
@@ -108,6 +108,19 @@ static inline struct task_struct *__COMPAT_scx_bpf_dsq_peek(u64 dsq_id)
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
* v7.1: scx_bpf_sub_dispatch() for sub-sched dispatch. Preserve until
|
||||
* we drop the compat layer for older kernels that lack the kfunc.
|
||||
*/
|
||||
bool scx_bpf_sub_dispatch___compat(u64 cgroup_id) __ksym __weak;
|
||||
|
||||
static inline bool scx_bpf_sub_dispatch(u64 cgroup_id)
|
||||
{
|
||||
if (bpf_ksym_exists(scx_bpf_sub_dispatch___compat))
|
||||
return scx_bpf_sub_dispatch___compat(cgroup_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* __COMPAT_is_enq_cpu_selected - Test if SCX_ENQ_CPU_SELECTED is on
|
||||
* in a compatible way. We will preserve this __COMPAT helper until v6.16.
|
||||
|
||||
Reference in New Issue
Block a user