Hi Reinette,
On 1/22/2023 8:22 PM, Shaopeng Tan (Fujitsu) wrote:
On 1/10/2023 11:58 PM, Shaopeng Tan wrote:
...
diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c index 6a8306b0a109..87302b882929 100644 --- a/tools/testing/selftests/resctrl/cat_test.c +++ b/tools/testing/selftests/resctrl/cat_test.c @@ -103,7 +103,6 @@ int cat_perf_miss_val(int cpu_no, int n, char
*cache_type)
unsigned long l_mask, l_mask_1; int ret, pipefd[2], sibling_cpu_no; char pipe_message;
pid_t bm_pid;
cache_size = 0;
@@ -181,28 +180,29 @@ int cat_perf_miss_val(int cpu_no, int n, char
*cache_type)
strcpy(param.filename, RESULT_FILE_NAME1); param.num_of_runs = 0; param.cpu_no = sibling_cpu_no;
- } else {
ret = signal_handler_register();
if (ret)
goto out;
The "goto" will unregister the signal handler. Is that necessary if the registration failed?
Also, if signal_handler_register() fails then the child will keep running and run its test ... would child not then run forever?
A signal handler is needed here, but it is rarely used. Also, the registration rarely fails. Therefore, if registration failed, just print a warning/info message as follow. how about this idea?
ksft_print_msg("Failed to register signal handler, signals SIGINT/SIGTERM/SIGHUP will not be handled as expected");
I do not think this is necessary considering that signal_handler_register() already prints an error on failure.
Adding an error message does not address the two issues I raised.
The previous idea was just to print a message instead of "goto". How about the idea to keep the parent&child process running forever even if the signal handler registration fails.
+ } else { + signal_handler_register(); + }
I don't think the test need stop when the signal handler registration fails, since this signal handler is rarely used and registration of signal handlers rarely fails.
Best regards, Shaopeng TAN