Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sched_ext: Fix function pointer type mismatches in BPF selftests

Fix incompatible function pointer type warnings in sched_ext BPF selftests by
explicitly casting the function pointers when initializing struct_ops.
This addresses multiple -Wincompatible-function-pointer-types warnings from the
clang compiler where function signatures didn't match exactly.

The void * cast ensures the compiler accepts the function pointer
assignment despite minor type differences in the parameters.

Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Vishal Chourasia and committed by
Tejun Heo
4f7f4170 9b3c11a8

+80 -80
+3 -3
tools/testing/selftests/sched_ext/create_dsq.bpf.c
··· 51 51 52 52 SEC(".struct_ops.link") 53 53 struct sched_ext_ops create_dsq_ops = { 54 - .init_task = create_dsq_init_task, 55 - .exit_task = create_dsq_exit_task, 56 - .init = create_dsq_init, 54 + .init_task = (void *) create_dsq_init_task, 55 + .exit_task = (void *) create_dsq_exit_task, 56 + .init = (void *) create_dsq_init, 57 57 .name = "create_dsq", 58 58 };
+2 -2
tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
··· 35 35 36 36 SEC(".struct_ops.link") 37 37 struct sched_ext_ops ddsp_bogus_dsq_fail_ops = { 38 - .select_cpu = ddsp_bogus_dsq_fail_select_cpu, 39 - .exit = ddsp_bogus_dsq_fail_exit, 38 + .select_cpu = (void *) ddsp_bogus_dsq_fail_select_cpu, 39 + .exit = (void *) ddsp_bogus_dsq_fail_exit, 40 40 .name = "ddsp_bogus_dsq_fail", 41 41 .timeout_ms = 1000U, 42 42 };
+2 -2
tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
··· 32 32 33 33 SEC(".struct_ops.link") 34 34 struct sched_ext_ops ddsp_vtimelocal_fail_ops = { 35 - .select_cpu = ddsp_vtimelocal_fail_select_cpu, 36 - .exit = ddsp_vtimelocal_fail_exit, 35 + .select_cpu = (void *) ddsp_vtimelocal_fail_select_cpu, 36 + .exit = (void *) ddsp_vtimelocal_fail_exit, 37 37 .name = "ddsp_vtimelocal_fail", 38 38 .timeout_ms = 1000U, 39 39 };
+4 -4
tools/testing/selftests/sched_ext/dsp_local_on.bpf.c
··· 56 56 57 57 SEC(".struct_ops.link") 58 58 struct sched_ext_ops dsp_local_on_ops = { 59 - .select_cpu = dsp_local_on_select_cpu, 60 - .enqueue = dsp_local_on_enqueue, 61 - .dispatch = dsp_local_on_dispatch, 62 - .exit = dsp_local_on_exit, 59 + .select_cpu = (void *) dsp_local_on_select_cpu, 60 + .enqueue = (void *) dsp_local_on_enqueue, 61 + .dispatch = (void *) dsp_local_on_dispatch, 62 + .exit = (void *) dsp_local_on_exit, 63 63 .name = "dsp_local_on", 64 64 .timeout_ms = 1000U, 65 65 };
+2 -2
tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c
··· 36 36 37 37 SEC(".struct_ops.link") 38 38 struct sched_ext_ops enq_select_cpu_fails_ops = { 39 - .select_cpu = enq_select_cpu_fails_select_cpu, 40 - .enqueue = enq_select_cpu_fails_enqueue, 39 + .select_cpu = (void *) enq_select_cpu_fails_select_cpu, 40 + .enqueue = (void *) enq_select_cpu_fails_enqueue, 41 41 .name = "enq_select_cpu_fails", 42 42 .timeout_ms = 1000U, 43 43 };
+7 -7
tools/testing/selftests/sched_ext/exit.bpf.c
··· 72 72 73 73 SEC(".struct_ops.link") 74 74 struct sched_ext_ops exit_ops = { 75 - .select_cpu = exit_select_cpu, 76 - .enqueue = exit_enqueue, 77 - .dispatch = exit_dispatch, 78 - .init_task = exit_init_task, 79 - .enable = exit_enable, 80 - .exit = exit_exit, 81 - .init = exit_init, 75 + .select_cpu = (void *) exit_select_cpu, 76 + .enqueue = (void *) exit_enqueue, 77 + .dispatch = (void *) exit_dispatch, 78 + .init_task = (void *) exit_init_task, 79 + .enable = (void *) exit_enable, 80 + .exit = (void *) exit_exit, 81 + .init = (void *) exit_init, 82 82 .name = "exit", 83 83 .timeout_ms = 1000U, 84 84 };
+4 -4
tools/testing/selftests/sched_ext/hotplug.bpf.c
··· 46 46 47 47 SEC(".struct_ops.link") 48 48 struct sched_ext_ops hotplug_cb_ops = { 49 - .cpu_online = hotplug_cpu_online, 50 - .cpu_offline = hotplug_cpu_offline, 51 - .exit = hotplug_exit, 49 + .cpu_online = (void *) hotplug_cpu_online, 50 + .cpu_offline = (void *) hotplug_cpu_offline, 51 + .exit = (void *) hotplug_exit, 52 52 .name = "hotplug_cbs", 53 53 .timeout_ms = 1000U, 54 54 }; 55 55 56 56 SEC(".struct_ops.link") 57 57 struct sched_ext_ops hotplug_nocb_ops = { 58 - .exit = hotplug_exit, 58 + .exit = (void *) hotplug_exit, 59 59 .name = "hotplug_nocbs", 60 60 .timeout_ms = 1000U, 61 61 };
+4 -4
tools/testing/selftests/sched_ext/init_enable_count.bpf.c
··· 45 45 46 46 SEC(".struct_ops.link") 47 47 struct sched_ext_ops init_enable_count_ops = { 48 - .init_task = cnt_init_task, 49 - .exit_task = cnt_exit_task, 50 - .enable = cnt_enable, 51 - .disable = cnt_disable, 48 + .init_task = (void *) cnt_init_task, 49 + .exit_task = (void *) cnt_exit_task, 50 + .enable = (void *) cnt_enable, 51 + .disable = (void *) cnt_disable, 52 52 .name = "init_enable_count", 53 53 };
+29 -29
tools/testing/selftests/sched_ext/maximal.bpf.c
··· 131 131 132 132 SEC(".struct_ops.link") 133 133 struct sched_ext_ops maximal_ops = { 134 - .select_cpu = maximal_select_cpu, 135 - .enqueue = maximal_enqueue, 136 - .dequeue = maximal_dequeue, 137 - .dispatch = maximal_dispatch, 138 - .runnable = maximal_runnable, 139 - .running = maximal_running, 140 - .stopping = maximal_stopping, 141 - .quiescent = maximal_quiescent, 142 - .yield = maximal_yield, 143 - .core_sched_before = maximal_core_sched_before, 144 - .set_weight = maximal_set_weight, 145 - .set_cpumask = maximal_set_cpumask, 146 - .update_idle = maximal_update_idle, 147 - .cpu_acquire = maximal_cpu_acquire, 148 - .cpu_release = maximal_cpu_release, 149 - .cpu_online = maximal_cpu_online, 150 - .cpu_offline = maximal_cpu_offline, 151 - .init_task = maximal_init_task, 152 - .enable = maximal_enable, 153 - .exit_task = maximal_exit_task, 154 - .disable = maximal_disable, 155 - .cgroup_init = maximal_cgroup_init, 156 - .cgroup_exit = maximal_cgroup_exit, 157 - .cgroup_prep_move = maximal_cgroup_prep_move, 158 - .cgroup_move = maximal_cgroup_move, 159 - .cgroup_cancel_move = maximal_cgroup_cancel_move, 160 - .cgroup_set_weight = maximal_cgroup_set_weight, 161 - .init = maximal_init, 162 - .exit = maximal_exit, 134 + .select_cpu = (void *) maximal_select_cpu, 135 + .enqueue = (void *) maximal_enqueue, 136 + .dequeue = (void *) maximal_dequeue, 137 + .dispatch = (void *) maximal_dispatch, 138 + .runnable = (void *) maximal_runnable, 139 + .running = (void *) maximal_running, 140 + .stopping = (void *) maximal_stopping, 141 + .quiescent = (void *) maximal_quiescent, 142 + .yield = (void *) maximal_yield, 143 + .core_sched_before = (void *) maximal_core_sched_before, 144 + .set_weight = (void *) maximal_set_weight, 145 + .set_cpumask = (void *) maximal_set_cpumask, 146 + .update_idle = (void *) maximal_update_idle, 147 + .cpu_acquire = (void *) maximal_cpu_acquire, 148 + .cpu_release = (void *) maximal_cpu_release, 149 + .cpu_online = (void *) maximal_cpu_online, 150 + .cpu_offline = (void *) maximal_cpu_offline, 151 + .init_task = (void *) maximal_init_task, 152 + .enable = (void *) maximal_enable, 153 + .exit_task = (void *) maximal_exit_task, 154 + .disable = (void *) maximal_disable, 155 + .cgroup_init = (void *) maximal_cgroup_init, 156 + .cgroup_exit = (void *) maximal_cgroup_exit, 157 + .cgroup_prep_move = (void *) maximal_cgroup_prep_move, 158 + .cgroup_move = (void *) maximal_cgroup_move, 159 + .cgroup_cancel_move = (void *) maximal_cgroup_cancel_move, 160 + .cgroup_set_weight = (void *) maximal_cgroup_set_weight, 161 + .init = (void *) maximal_init, 162 + .exit = (void *) maximal_exit, 163 163 .name = "maximal", 164 164 };
+3 -3
tools/testing/selftests/sched_ext/maybe_null.bpf.c
··· 29 29 30 30 SEC(".struct_ops.link") 31 31 struct sched_ext_ops maybe_null_success = { 32 - .dispatch = maybe_null_success_dispatch, 33 - .yield = maybe_null_success_yield, 34 - .enable = maybe_null_running, 32 + .dispatch = (void *) maybe_null_success_dispatch, 33 + .yield = (void *) maybe_null_success_yield, 34 + .enable = (void *) maybe_null_running, 35 35 .name = "minimal", 36 36 };
+2 -2
tools/testing/selftests/sched_ext/maybe_null_fail_dsp.bpf.c
··· 19 19 20 20 SEC(".struct_ops.link") 21 21 struct sched_ext_ops maybe_null_fail = { 22 - .dispatch = maybe_null_fail_dispatch, 23 - .enable = maybe_null_running, 22 + .dispatch = (void *) maybe_null_fail_dispatch, 23 + .enable = (void *) maybe_null_running, 24 24 .name = "maybe_null_fail_dispatch", 25 25 };
+2 -2
tools/testing/selftests/sched_ext/maybe_null_fail_yld.bpf.c
··· 22 22 23 23 SEC(".struct_ops.link") 24 24 struct sched_ext_ops maybe_null_fail = { 25 - .yield = maybe_null_fail_yield, 26 - .enable = maybe_null_running, 25 + .yield = (void *) maybe_null_fail_yield, 26 + .enable = (void *) maybe_null_running, 27 27 .name = "maybe_null_fail_yield", 28 28 };
+1 -1
tools/testing/selftests/sched_ext/prog_run.bpf.c
··· 28 28 29 29 SEC(".struct_ops.link") 30 30 struct sched_ext_ops prog_run_ops = { 31 - .exit = prog_run_exit, 31 + .exit = (void *) prog_run_exit, 32 32 .name = "prog_run", 33 33 };
+1 -1
tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c
··· 35 35 36 36 SEC(".struct_ops.link") 37 37 struct sched_ext_ops select_cpu_dfl_ops = { 38 - .enqueue = select_cpu_dfl_enqueue, 38 + .enqueue = (void *) select_cpu_dfl_enqueue, 39 39 .name = "select_cpu_dfl", 40 40 };
+3 -3
tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c
··· 82 82 83 83 SEC(".struct_ops.link") 84 84 struct sched_ext_ops select_cpu_dfl_nodispatch_ops = { 85 - .select_cpu = select_cpu_dfl_nodispatch_select_cpu, 86 - .enqueue = select_cpu_dfl_nodispatch_enqueue, 87 - .init_task = select_cpu_dfl_nodispatch_init_task, 85 + .select_cpu = (void *) select_cpu_dfl_nodispatch_select_cpu, 86 + .enqueue = (void *) select_cpu_dfl_nodispatch_enqueue, 87 + .init_task = (void *) select_cpu_dfl_nodispatch_init_task, 88 88 .name = "select_cpu_dfl_nodispatch", 89 89 };
+1 -1
tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c
··· 35 35 36 36 SEC(".struct_ops.link") 37 37 struct sched_ext_ops select_cpu_dispatch_ops = { 38 - .select_cpu = select_cpu_dispatch_select_cpu, 38 + .select_cpu = (void *) select_cpu_dispatch_select_cpu, 39 39 .name = "select_cpu_dispatch", 40 40 .timeout_ms = 1000U, 41 41 };
+2 -2
tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c
··· 30 30 31 31 SEC(".struct_ops.link") 32 32 struct sched_ext_ops select_cpu_dispatch_bad_dsq_ops = { 33 - .select_cpu = select_cpu_dispatch_bad_dsq_select_cpu, 34 - .exit = select_cpu_dispatch_bad_dsq_exit, 33 + .select_cpu = (void *) select_cpu_dispatch_bad_dsq_select_cpu, 34 + .exit = (void *) select_cpu_dispatch_bad_dsq_exit, 35 35 .name = "select_cpu_dispatch_bad_dsq", 36 36 .timeout_ms = 1000U, 37 37 };
+2 -2
tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c
··· 31 31 32 32 SEC(".struct_ops.link") 33 33 struct sched_ext_ops select_cpu_dispatch_dbl_dsp_ops = { 34 - .select_cpu = select_cpu_dispatch_dbl_dsp_select_cpu, 35 - .exit = select_cpu_dispatch_dbl_dsp_exit, 34 + .select_cpu = (void *) select_cpu_dispatch_dbl_dsp_select_cpu, 35 + .exit = (void *) select_cpu_dispatch_dbl_dsp_exit, 36 36 .name = "select_cpu_dispatch_dbl_dsp", 37 37 .timeout_ms = 1000U, 38 38 };
+6 -6
tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c
··· 81 81 82 82 SEC(".struct_ops.link") 83 83 struct sched_ext_ops select_cpu_vtime_ops = { 84 - .select_cpu = select_cpu_vtime_select_cpu, 85 - .dispatch = select_cpu_vtime_dispatch, 86 - .running = select_cpu_vtime_running, 87 - .stopping = select_cpu_vtime_stopping, 88 - .enable = select_cpu_vtime_enable, 89 - .init = select_cpu_vtime_init, 84 + .select_cpu = (void *) select_cpu_vtime_select_cpu, 85 + .dispatch = (void *) select_cpu_vtime_dispatch, 86 + .running = (void *) select_cpu_vtime_running, 87 + .stopping = (void *) select_cpu_vtime_stopping, 88 + .enable = (void *) select_cpu_vtime_enable, 89 + .init = (void *) select_cpu_vtime_init, 90 90 .name = "select_cpu_vtime", 91 91 .timeout_ms = 1000U, 92 92 };