Commit 640c9dc7 authored by David Carlier's avatar David Carlier Committed by Tejun Heo
Browse files

tools/sched_ext: fix getopt not re-parsed on restart



After goto restart, optind retains its advanced position from the
previous getopt loop, causing getopt() to immediately return -1.
This silently drops all command-line options on the restarted skeleton.

Reset optind to 1 at the restart label so options are re-parsed.

Affected schedulers: scx_simple, scx_central, scx_flatcg, scx_pair,
scx_sdt, scx_cpu0.

Signed-off-by: default avatarDavid Carlier <devnexen@gmail.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent f892f9f9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ int main(int argc, char **argv)
	signal(SIGINT, sigint_handler);
	signal(SIGTERM, sigint_handler);
restart:
	optind = 1;
	skel = SCX_OPS_OPEN(central_ops, scx_central);

	skel->rodata->central_cpu = 0;
+1 −0
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ int main(int argc, char **argv)
	signal(SIGINT, sigint_handler);
	signal(SIGTERM, sigint_handler);
restart:
	optind = 1;
	skel = SCX_OPS_OPEN(cpu0_ops, scx_cpu0);

	skel->rodata->nr_cpus = libbpf_num_possible_cpus();
+1 −0
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ int main(int argc, char **argv)
	signal(SIGINT, sigint_handler);
	signal(SIGTERM, sigint_handler);
restart:
	optind = 1;
	skel = SCX_OPS_OPEN(flatcg_ops, scx_flatcg);

	skel->rodata->nr_cpus = libbpf_num_possible_cpus();
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ int main(int argc, char **argv)
	signal(SIGINT, sigint_handler);
	signal(SIGTERM, sigint_handler);
restart:
	optind = 1;
	skel = SCX_OPS_OPEN(pair_ops, scx_pair);

	skel->rodata->nr_cpu_ids = libbpf_num_possible_cpus();
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ int main(int argc, char **argv)
	signal(SIGINT, sigint_handler);
	signal(SIGTERM, sigint_handler);
restart:
	optind = 1;
	skel = SCX_OPS_OPEN(sdt_ops, scx_sdt);

	while ((opt = getopt(argc, argv, "fvh")) != -1) {
Loading