Hi Ilpo,

On 12/11/2023 4:17 AM, Ilpo Järvinen wrote:
> The resctrl selftest code contains a number of perror() calls. Some of
> them come with hash character and some don't. The kselftest framework
> provides ksft_perror() that is compatible with test output formatting
> so it should be used instead of adding custom hash signs.
> 
> Some perror() calls are too far away from anything that sets error.
> For those call sites, ksft_print_msg() must be used instead.
> 
> Convert perror() to ksft_perror() or ksft_print_msg().
> 
> Other related changes:
> - Remove hash signs
> - Remove trailing stops & newlines from ksft_perror()
> - Add terminating newlines for converted ksft_print_msg()
> - Use consistent capitalization
> 

Another great cleanup. Also thanks for fixing some non-sensical messages.

...

> @@ -149,7 +149,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
>       param.num_of_runs = 0;
>  
>       if (pipe(pipefd)) {
> -             perror("# Unable to create pipe");
> +             ksft_perror("Unable to create pipe");
>               return errno;
>       }
>  
> @@ -185,7 +185,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
>                        * Just print the error message.
>                        * Let while(1) run and wait for itself to be killed.
>                        */
> -                     perror("# failed signaling parent process");
> +                     ksft_perror("Failed signaling parent process");
>  

Partial writes are not actually errors and it cannot be expected that errno be 
set
in these cases. In these cases I think ksft_print_msg() would be more 
appropriate.

>               close(pipefd[1]);
>               while (1)
> @@ -197,7 +197,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
>               while (pipe_message != 1) {
>                       if (read(pipefd[0], &pipe_message,
>                                sizeof(pipe_message)) < sizeof(pipe_message)) {
> -                             perror("# failed reading from child process");
> +                             ksft_perror("Failed reading from child 
> process");
>                               break;
>                       }

Same with partial reads.


...

  
> @@ -540,14 +540,14 @@ static int print_results_bw(char *filename,  int 
> bm_pid, float bw_imc,
>       } else {
>               fp = fopen(filename, "a");
>               if (!fp) {
> -                     perror("Cannot open results file");
> +                     ksft_perror("Cannot open results file");
>  
>                       return errno;
>               }
>               if (fprintf(fp, "Pid: %d \t Mem_BW_iMC: %f \t Mem_BW_resc: %lu 
> \t Difference: %lu\n",
>                           bm_pid, bw_imc, bw_resc, diff) <= 0) {
> +                     ksft_perror("Could not log results");
>                       fclose(fp);
> -                     perror("Could not log results.");
>  
>                       return errno;

>From what I can tell fprintf() does not set errno on error. Perhaps this
should rather be ksft_print_msg()?


...

> @@ -738,15 +743,17 @@ int resctrl_val(const char * const *benchmark_cmd, 
> struct resctrl_val_param *par
>               sigact.sa_flags = SA_SIGINFO;
>  
>               /* Register for "SIGUSR1" signal from parent */
> -             if (sigaction(SIGUSR1, &sigact, NULL))
> -                     PARENT_EXIT("Can't register child for signal");
> +             if (sigaction(SIGUSR1, &sigact, NULL)) {
> +                     ksft_perror("Can't register child for signal");
> +                     PARENT_EXIT();
> +             }
>  
>               /* Tell parent that child is ready */
>               close(pipefd[0]);
>               pipe_message = 1;
>               if (write(pipefd[1], &pipe_message, sizeof(pipe_message)) <
>                   sizeof(pipe_message)) {
> -                     perror("# failed signaling parent process");
> +                     ksft_perror("Failed signaling parent process");
>                       close(pipefd[1]);
>                       return -1;

another partial write possibility

>               }
> @@ -755,7 +762,8 @@ int resctrl_val(const char * const *benchmark_cmd, struct 
> resctrl_val_param *par
>               /* Suspend child until delivery of "SIGUSR1" from parent */
>               sigsuspend(&sigact.sa_mask);
>  
> -             PARENT_EXIT("Child is done");
> +             ksft_perror("Child is done");
> +             PARENT_EXIT();
>       }
>  
>       ksft_print_msg("Benchmark PID: %d\n", bm_pid);
> @@ -796,7 +804,7 @@ int resctrl_val(const char * const *benchmark_cmd, struct 
> resctrl_val_param *par
>       while (pipe_message != 1) {
>               if (read(pipefd[0], &pipe_message, sizeof(pipe_message)) <
>                   sizeof(pipe_message)) {
> -                     perror("# failed reading message from child process");
> +                     ksft_perror("Failed reading message from child 
> process");
>                       close(pipefd[0]);
>                       goto out;

another partial read possibility

...

> @@ -348,12 +348,12 @@ static int write_pid_to_tasks(char *tasks, pid_t pid)
>  
>       fp = fopen(tasks, "w");
>       if (!fp) {
> -             perror("Failed to open tasks file");
> +             ksft_perror("Failed to open tasks file");
>  
>               return -1;
>       }
>       if (fprintf(fp, "%d\n", pid) < 0) {
> -             perror("Failed to wr pid to tasks file");
> +             ksft_perror("Failed to wr pid to tasks file");
>               fclose(fp);
>  

another fprintf() that I do not think sets errno on error.


Reinette

Reply via email to