mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 07:51:31 -04:00
tools/sched_ext: Add compat handling for sub-scheduler ops
Extend SCX_OPS_OPEN() with compatibility handling for ops.sub_attach()
and ops.sub_detach(), allowing scx C schedulers with sub-scheduler
support to run on kernels both with and without its support.
Cc: Cheng-Yang Chou <yphbchou0911@gmail.com>
Fixes: ebeca1f930 ("sched_ext: Introduce cgroup sub-sched support")
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Reviewed-by: Cheng-Yang Chou <yphbchou0911@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -160,6 +160,7 @@ static inline long scx_hotplug_seq(void)
|
||||
* COMPAT:
|
||||
* - v6.17: ops.cgroup_set_bandwidth()
|
||||
* - v6.19: ops.cgroup_set_idle()
|
||||
* - v7.1: ops.sub_attach(), ops.sub_detach(), ops.sub_cgroup_id
|
||||
*/
|
||||
#define SCX_OPS_OPEN(__ops_name, __scx_name) ({ \
|
||||
struct __scx_name *__skel; \
|
||||
@@ -181,6 +182,21 @@ static inline long scx_hotplug_seq(void)
|
||||
fprintf(stderr, "WARNING: kernel doesn't support ops.cgroup_set_idle()\n"); \
|
||||
__skel->struct_ops.__ops_name->cgroup_set_idle = NULL; \
|
||||
} \
|
||||
if (__skel->struct_ops.__ops_name->sub_attach && \
|
||||
!__COMPAT_struct_has_field("sched_ext_ops", "sub_attach")) { \
|
||||
fprintf(stderr, "WARNING: kernel doesn't support ops.sub_attach()\n"); \
|
||||
__skel->struct_ops.__ops_name->sub_attach = NULL; \
|
||||
} \
|
||||
if (__skel->struct_ops.__ops_name->sub_detach && \
|
||||
!__COMPAT_struct_has_field("sched_ext_ops", "sub_detach")) { \
|
||||
fprintf(stderr, "WARNING: kernel doesn't support ops.sub_detach()\n"); \
|
||||
__skel->struct_ops.__ops_name->sub_detach = NULL; \
|
||||
} \
|
||||
if (__skel->struct_ops.__ops_name->sub_cgroup_id > 0 && \
|
||||
!__COMPAT_struct_has_field("sched_ext_ops", "sub_cgroup_id")) { \
|
||||
fprintf(stderr, "WARNING: kernel doesn't support ops.sub_cgroup_id\n"); \
|
||||
__skel->struct_ops.__ops_name->sub_cgroup_id = 0; \
|
||||
} \
|
||||
__skel; \
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user