From: Andre Przywara <andre.przywara@arm.com>
To: Shuah Khan <skhan@linuxfoundation.org>
Cc: Shuah Khan <shuah@kernel.org>, Nhat Pham <nphamcs@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
linux-kselftest@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] selftests: cachestat: test for cachestat availability
Date: Thu, 17 Aug 2023 15:47:54 +0100 [thread overview]
Message-ID: <20230817154754.278218ae@donnerap.manchester.arm.com> (raw)
In-Reply-To: <59c0fcd1-a1f2-de37-c94d-76687934acd5@linuxfoundation.org>
On Wed, 16 Aug 2023 11:11:49 -0600
Shuah Khan <skhan@linuxfoundation.org> wrote:
Hi,
> On 8/15/23 09:56, Andre Przywara wrote:
> > As cachestat is a new syscall, it won't be available on older kernels,
> > for instance those running on a build machine. In this case, a run
> > reports all tests as "not ok" at the moment.
> >
> > Test for the cachestat syscall availability first, before doing further
> > tests, and bail out early with a TAP SKIP comment.
> >
> > This also uses the opportunity to add the proper TAP headers, and add
> > one check for the syscall error handling (illegal file descriptor).
> >
> > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > ---
> > .../selftests/cachestat/test_cachestat.c | 22 ++++++++++++++++++-
> > 1 file changed, 21 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/cachestat/test_cachestat.c b/tools/testing/selftests/cachestat/test_cachestat.c
> > index a5a4ac8dcb76c..77620e7ecf562 100644
> > --- a/tools/testing/selftests/cachestat/test_cachestat.c
> > +++ b/tools/testing/selftests/cachestat/test_cachestat.c
> > @@ -15,6 +15,8 @@
> >
> > #include "../kselftest.h"
> >
> > +#define NR_TESTS 8
> > +
> > static const char * const dev_files[] = {
> > "/dev/zero", "/dev/null", "/dev/urandom",
> > "/proc/version", "/proc"
> > @@ -235,7 +237,25 @@ bool test_cachestat_shmem(void)
> >
> > int main(void)
> > {
> > - int ret = 0;
> > + int ret;
> > +
> > + ksft_print_header();
> > +
> > + ret = syscall(__NR_cachestat, -1, NULL, NULL, 0);
> > + if (ret == -1 && errno == ENOSYS) {
> > + printf("1..0 # Skipped: cachestat syscall not available\n");
> > + return KSFT_SKIP;
> What happens when other errors besides ENOSYS? The test shouldn't
> continue.
-1 is an illegal file descriptor, and this is checked below (still using
the same ret and errno), but reported using the normal framework.
This check above is done early, before we even announce the plan, so that
we can skip *all* of the tests, since they don't make any sense when the
syscall is not available at all.
Does that make sense?
Cheers,
Andre
>
> > + }
> > +
> > + ksft_set_plan(NR_TESTS);
> > +
> > + if (ret == -1 && errno == EBADF) {
> > + ksft_test_result_pass("bad file descriptor recognized\n");
> > + ret = 0;
> > + } else {
> > + ksft_test_result_fail("bad file descriptor ignored\n");
> > + ret = 1;
> > + }
> >
> > for (int i = 0; i < 5; i++) {
> > const char *dev_filename = dev_files[i];
>
> thanks,
> -- Shuah
next prev parent reply other threads:[~2023-08-17 14:48 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-15 15:56 [PATCH 0/3] selftests: cachestat: fix build and run on older kernels Andre Przywara
2023-08-15 15:56 ` [PATCH 1/3] selftests: cachestat: properly link in librt Andre Przywara
2023-08-16 17:14 ` Shuah Khan
2023-08-15 15:56 ` [PATCH 2/3] selftests: cachestat: use proper syscall number macro Andre Przywara
2023-08-15 18:09 ` Nhat Pham
2023-08-16 17:15 ` Shuah Khan
2023-08-15 15:56 ` [PATCH 3/3] selftests: cachestat: test for cachestat availability Andre Przywara
2023-08-15 23:25 ` Nhat Pham
2023-08-16 9:36 ` Andre Przywara
2023-08-16 17:11 ` Shuah Khan
2023-08-17 14:47 ` Andre Przywara [this message]
2023-08-17 18:01 ` Shuah Khan
2023-08-15 18:07 ` [PATCH 0/3] selftests: cachestat: fix build and run on older kernels Nhat Pham
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=20230817154754.278218ae@donnerap.manchester.arm.com \
--to=andre.przywara@arm.com \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.com \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.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