From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Cc: Reinette Chatre <reinette.chatre@intel.com>,
fenghua.yu@intel.com, shuah@kernel.org,
LKML <linux-kernel@vger.kernel.org>,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v3 2/5] selftests/resctrl: Add helpers for the non-contiguous test
Date: Thu, 25 Jan 2024 14:14:55 +0200 (EET) [thread overview]
Message-ID: <ea9b0e06-c07e-eb4b-9e7d-ed20419b677d@linux.intel.com> (raw)
In-Reply-To: <85b1efc3ddd698b3ac81aa72a6dc987ee17da3e2.1706180726.git.maciej.wieczor-retman@intel.com>
On Thu, 25 Jan 2024, Maciej Wieczor-Retman wrote:
> The CAT non-contiguous selftests have to read the file responsible for
> reporting support of non-contiguous CBMs in kernel (resctrl). Then the
> test compares if that information matches what is reported by CPUID
> output.
>
> Add a generic helper function to read an unsigned number from a file in
> /sys/fs/resctrl/info/<RESOURCE>/<FILE>.
>
> Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
> ---
> Changelog v3:
> - Rewrite patch message.
> - Add documentation and rewrote the function. (Reinette)
>
> Changelog v2:
> - Add this patch.
>
> tools/testing/selftests/resctrl/resctrl.h | 1 +
> tools/testing/selftests/resctrl/resctrlfs.c | 39 +++++++++++++++++++++
> 2 files changed, 40 insertions(+)
>
> diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
> index a1462029998e..5116ea082d03 100644
> --- a/tools/testing/selftests/resctrl/resctrl.h
> +++ b/tools/testing/selftests/resctrl/resctrl.h
> @@ -162,6 +162,7 @@ unsigned int count_contiguous_bits(unsigned long val, unsigned int *start);
> int get_full_cbm(const char *cache_type, unsigned long *mask);
> int get_mask_no_shareable(const char *cache_type, unsigned long *mask);
> int get_cache_size(int cpu_no, const char *cache_type, unsigned long *cache_size);
> +int resource_info_unsigned_get(const char *resource, const char *filename, unsigned int *val);
> void ctrlc_handler(int signum, siginfo_t *info, void *ptr);
> int signal_handler_register(void);
> void signal_handler_unregister(void);
> diff --git a/tools/testing/selftests/resctrl/resctrlfs.c b/tools/testing/selftests/resctrl/resctrlfs.c
> index 5750662cce57..cb5147c5f9a9 100644
> --- a/tools/testing/selftests/resctrl/resctrlfs.c
> +++ b/tools/testing/selftests/resctrl/resctrlfs.c
> @@ -249,6 +249,45 @@ static int get_bit_mask(const char *filename, unsigned long *mask)
> return 0;
> }
>
> +/*
> + * resource_info_unsigned_get - Read an unsigned value from a file in
> + * /sys/fs/resctrl/info/RESOURCE/FILENAME
> + * @resource: Resource name that matches directory names in
> + * /sys/fs/resctrl/info
> + * @filename: Filename of a file located in a directory specified with the
> + * 'resource' variable.
> + * @val: Variable where the read value is saved on success.
> + *
> + * Return: = 0 on success, < 0 on failure. On success the read value is saved into the 'val'
> + * variable.
> + */
> +int resource_info_unsigned_get(const char *resource, const char *filename,
> + unsigned int *val)
> +{
> + char reason[128], file_path[PATH_MAX];
> + FILE *fp;
> +
> + snprintf(file_path, sizeof(file_path), "%s/%s/%s", INFO_PATH, resource,
> + filename);
> +
> + fp = fopen(file_path, "r");
> + if (!fp) {
> + snprintf(reason, sizeof(reason), "Error in opening %s file\n", filename);
> + ksft_perror(reason);
Was this the conclusion of the kstf_perror() discussion with Reinette? I
expected a bit different outcome when I stopped following it...
In any case, it would be nice though if ksft_perror() (or some kselftest.h
function yet to be added with a different name) would accept full printf
interface and just add the errno string into the end of the string so one
would not need to build constructs like this at all.
It will require a bit of macro trickery into kselftest.h. I don't know how
it should handle the case where somebody just passes a char pointer to it,
not a string literal, but I guess it would just throw an error while
compiling if somebody tries to do that as the macro string literal
concatenation could not build useful/compilable token.
It would make these prints informative enough to become actually useful
without needed to resort to preparing the string in advance which seems
to be required almost every single case with the current interface.
> + return -1;
> + }
> +
> + if (fscanf(fp, "%u", val) <= 0) {
> + snprintf(reason, sizeof(reason), "Could not get %s's contents\n", filename);
> + ksft_perror(reason);
> + fclose(fp);
> + return -1;
> + }
> +
> + fclose(fp);
> + return 0;
> +}
> +
> /*
> * create_bit_mask- Create bit mask from start, len pair
> * @start: LSB of the mask
>
--
i.
next prev parent reply other threads:[~2024-01-25 12:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-25 11:09 [PATCH v3 0/5] selftests/resctrl: Add non-contiguous CBMs in Intel CAT selftest Maciej Wieczor-Retman
2024-01-25 11:10 ` [PATCH v3 1/5] selftests/resctrl: Add test groups and name L3 CAT test L3_CAT Maciej Wieczor-Retman
2024-01-25 11:10 ` [PATCH v3 2/5] selftests/resctrl: Add helpers for the non-contiguous test Maciej Wieczor-Retman
2024-01-25 12:14 ` Ilpo Järvinen [this message]
2024-01-26 18:58 ` Reinette Chatre
2024-01-31 11:57 ` Maciej Wieczor-Retman
2024-01-31 12:04 ` Ilpo Järvinen
2024-01-26 21:08 ` Reinette Chatre
2024-01-31 11:48 ` Maciej Wieczor-Retman
2024-01-25 11:12 ` [PATCH v3 3/5] selftests/resctrl: Split validate_resctrl_feature_request() Maciej Wieczor-Retman
2024-01-25 11:46 ` Ilpo Järvinen
2024-01-31 10:05 ` Maciej Wieczor-Retman
2024-01-25 11:12 ` [PATCH v3 4/5] selftests/resctrl: Add resource_info_file_exists() Maciej Wieczor-Retman
2024-01-25 12:16 ` Ilpo Järvinen
2024-01-26 21:08 ` Reinette Chatre
2024-01-31 12:07 ` Maciej Wieczor-Retman
2024-01-25 11:13 ` [PATCH v3 5/5] selftests/resctrl: Add non-contiguous CBMs CAT test Maciej Wieczor-Retman
2024-01-26 21:10 ` Reinette Chatre
2024-01-31 12:55 ` Maciej Wieczor-Retman
2024-02-01 19:47 ` Reinette Chatre
2024-02-02 10:17 ` Maciej Wieczor-Retman
2024-02-02 17:10 ` Reinette Chatre
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=ea9b0e06-c07e-eb4b-9e7d-ed20419b677d@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
/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