public inbox for linux-kselftest@vger.kernel.org
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	linux-kselftest@vger.kernel.org, "Shuah Khan" <shuah@kernel.org>,
	"Shaopeng Tan" <tan.shaopeng@jp.fujitsu.com>,
	"Maciej Wieczór-Retman" <maciej.wieczor-retman@intel.com>,
	"Fenghua Yu" <fenghua.yu@intel.com>
Cc: <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 01/29] selftests/resctrl: Convert perror() to ksft_perror() or ksft_print_msg()
Date: Wed, 13 Dec 2023 13:53:55 -0800	[thread overview]
Message-ID: <1e7ede83-ac80-43aa-a452-0f95b32d849c@intel.com> (raw)
In-Reply-To: <20231211121826.14392-2-ilpo.jarvinen@linux.intel.com>

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	other threads:[~2023-12-13 21:54 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11 12:17 [PATCH v3 00/29] selftests/resctrl: CAT test improvements & generalized test framework Ilpo Järvinen
2023-12-11 12:17 ` [PATCH v3 01/29] selftests/resctrl: Convert perror() to ksft_perror() or ksft_print_msg() Ilpo Järvinen
2023-12-13 21:53   ` Reinette Chatre [this message]
2023-12-14 10:12     ` Ilpo Järvinen
2023-12-14 18:10       ` Reinette Chatre
2023-12-11 12:17 ` [PATCH v3 02/29] selftests/resctrl: Return -1 instead of errno on error Ilpo Järvinen
2023-12-13 21:54   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 03/29] selftests/resctrl: Don't use ctrlc_handler() outside signal handling Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 04/29] selftests/resctrl: Change function comments to say < 0 on error Ilpo Järvinen
2023-12-13 21:54   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 05/29] selftests/resctrl: Split fill_buf to allow tests finer-grained control Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 06/29] selftests/resctrl: Refactor fill_buf functions Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 07/29] selftests/resctrl: Refactor get_cbm_mask() and rename to get_full_cbm() Ilpo Järvinen
2023-12-13 21:55   ` Reinette Chatre
2023-12-14 10:14     ` Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 08/29] selftests/resctrl: Mark get_cache_size() cache_type const Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 09/29] selftests/resctrl: Create cache_portion_size() helper Ilpo Järvinen
2023-12-13 21:56   ` Reinette Chatre
2023-12-14 10:16     ` Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 10/29] selftests/resctrl: Exclude shareable bits from schemata in CAT test Ilpo Järvinen
2023-12-13 21:56   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 11/29] selftests/resctrl: Split measure_cache_vals() Ilpo Järvinen
2023-12-13 21:56   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 12/29] selftests/resctrl: Split show_cache_info() to test specific and generic parts Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 13/29] selftests/resctrl: Remove unnecessary __u64 -> unsigned long conversion Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 14/29] selftests/resctrl: Remove nested calls in perf event handling Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 15/29] selftests/resctrl: Consolidate naming of perf event related things Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 16/29] selftests/resctrl: Improve perf init Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 17/29] selftests/resctrl: Convert perf related globals to locals Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 18/29] selftests/resctrl: Move cat_val() to cat_test.c and rename to cat_test() Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 19/29] selftests/resctrl: Open perf fd before start & add error handling Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 20/29] selftests/resctrl: Replace file write with volatile variable Ilpo Järvinen
2023-12-13 21:56   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 21/29] selftests/resctrl: Read in less obvious order to defeat prefetch optimizations Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 22/29] selftests/resctrl: Rewrite Cache Allocation Technology (CAT) test Ilpo Järvinen
2023-12-13 21:56   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 23/29] selftests/resctrl: Restore the CPU affinity after CAT test Ilpo Järvinen
2023-12-13 21:59   ` Reinette Chatre
2023-12-14 10:25     ` Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 24/29] selftests/resctrl: Create struct for input parameters Ilpo Järvinen
2023-12-13 21:59   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 25/29] selftests/resctrl: Introduce generalized test framework Ilpo Järvinen
2023-12-13 22:00   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 26/29] selftests/resctrl: Pass write_schemata() resource instead of test name Ilpo Järvinen
2023-12-11 12:18 ` [PATCH v3 27/29] selftests/resctrl: Add helper to convert L2/3 to integer Ilpo Järvinen
2023-12-13 22:00   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 28/29] selftests/resctrl: Rename resource ID to domain ID Ilpo Järvinen
2023-12-13 22:01   ` Reinette Chatre
2023-12-11 12:18 ` [PATCH v3 29/29] selftests/resctrl: Get domain id from cache id Ilpo Järvinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1e7ede83-ac80-43aa-a452-0f95b32d849c@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=shuah@kernel.org \
    --cc=tan.shaopeng@jp.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox