From: Jan Stancek <jstancek@redhat.com>
To: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
Cc: ltp-list <ltp-list@lists.sourceforge.net>
Subject: Re: [LTP] [PATCH v2 1/2] mlock/mlock02.c: cleanup
Date: Wed, 19 Feb 2014 06:02:42 -0500 (EST) [thread overview]
Message-ID: <195443697.5664448.1392807762480.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1392802716.2083.4.camel@G08JYZSD130126>
----- Original Message -----
> From: "Zeng Linggang" <zenglg.jy@cn.fujitsu.com>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: "ltp-list" <ltp-list@lists.sourceforge.net>
> Sent: Wednesday, 19 February, 2014 10:38:36 AM
> Subject: [PATCH v2 1/2] mlock/mlock02.c: cleanup
>
> * Delete some useless commtents.
> * Move the test body form main() to mlock_verify().
> * Some cleanup.
>
> Signed-off-by: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
Hi,
I have trouble compiling this patch (comments inline):
$ make
make -C "/usr/src/ltp/testcases/kernel/include" -f "/usr/src/ltp/testcases/kernel/include/Makefile" all
make[1]: Entering directory `/usr/src/ltp/testcases/kernel/include'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/ltp/testcases/kernel/include'
gcc -g -O2 -g -O2 -fno-strict-aliasing -pipe -Wall -W -D_FORTIFY_SOURCE=2 -I/usr/src/ltp/testcases/kernel/include -I../../../../include -I../../../../include -L../../../../lib mlock02.c -lltp -o mlock02
mlock02.c: In function ‘mlock_verify’:
mlock02.c:90: error: void value not ignored as it ought to be
make: *** [mlock02] Error 1
> ---
> testcases/kernel/syscalls/mlock/mlock02.c | 143
> +++++++++++++-----------------
> 1 file changed, 63 insertions(+), 80 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/mlock/mlock02.c
> b/testcases/kernel/syscalls/mlock/mlock02.c
> index edd9e45..1d1c853 100644
> --- a/testcases/kernel/syscalls/mlock/mlock02.c
> +++ b/testcases/kernel/syscalls/mlock/mlock02.c
> @@ -1,6 +1,6 @@
> /*
> - *
> * Copyright (c) International Business Machines Corp., 2002
> + * 06/2002 Written by Paul Larson
> *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> @@ -13,70 +13,48 @@
> * the GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> + * along with this program; if not, write to the Free Software
> Foundation,
> + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> -
> /*
> - * NAME
> - * mlock02.c
> - *
> - * DESCRIPTION
> - * Test to see the proper errors are returned by mlock
> - *$
> * ALGORITHM
> * test 1:
> * Call mlock with a NULL address. ENOMEM should be returned
> - *
> - * USAGE: <for command-line>
> - * -c n Run n copies concurrently
> - * -e Turn on errno logging
> - * -f Turn off functional testing
> - * -h Show this help screen
> - * -i n Execute test n times
> - * -I x Execute test for x seconds
> - * -p Pause for SIGUSR1 before starting
> - * -P x Pause for x seconds between iterations
> - * -t Turn on syscall timing
> - *
> - * HISTORY
> - * 06/2002 Written by Paul Larson
> - *
> - * RESTRICTIONS
> - * None
> */
> +
> #include <errno.h>
> #include <unistd.h>
> #include <sys/mman.h>
> #include "test.h"
> #include "usctest.h"
>
> -void setup();
> -void setup1();
> -void cleanup();
> -
> char *TCID = "mlock02";
> -int TST_TOTAL = 1;
> -
> -int exp_enos[] = { ENOMEM, 0 };
>
> -void *addr1;
> +#if !defined(UCLINUX)
>
> struct test_case_t {
> void **addr;
> int len;
> int error;
> void (*setupfunc) ();
should list parameters or void
> -} TC[] = {
> - /* mlock should return ENOMEM when some or all of the address
> - * range pointed to by addr and len are not valid mapped pages
> - * in the address space of the process
> - */
> - {
> - &addr1, 1024, ENOMEM, setup1}
> };
>
> -#if !defined(UCLINUX)
> +static void *addr1;
> +static void setup(void);
> +#ifdef __ia64__
> +static void setup1(const struct test_case_t *);
Why different prototype for ia64?
I don't think this parameter should be const, it's likely setupfunc()
will want to modify the struct.
> +#else
> +static void setup1(void);
> +#endif
> +static void cleanup(void);
> +static void mlock_verify(const struct test_case_t *);
> +
> +static struct test_case_t TC[] = {
> + {&addr1, 1024, ENOMEM, setup1},
> +};
> +
> +int TST_TOTAL = ARRAY_SIZE(TC);
> +static int exp_enos[] = { ENOMEM, 0 };
>
> int main(int ac, char **av)
> {
> @@ -91,62 +69,67 @@ int main(int ac, char **av)
> TEST_EXP_ENOS(exp_enos);
>
> for (lc = 0; TEST_LOOPING(lc); lc++) {
> -
> tst_count = 0;
> -
> - for (i = 0; i < TST_TOTAL; i++) {
> -
> - if (TC[i].setupfunc != NULL)
> - TC[i].setupfunc();
> -
> - TEST(mlock(*(TC[i].addr), TC[i].len));
> -
> - if (TEST_RETURN == -1) {
> - if (TEST_ERRNO != TC[i].error)
> - tst_brkm(TFAIL | TTERRNO, cleanup,
> - "mlock didn't fail as expected; "
> - "expected - %d : %s",
> - TC[i].error,
> - strerror(TC[i].error));
> - else
> - tst_resm(TPASS | TTERRNO,
> - "mlock failed as expected");
> - } else
> - tst_brkm(TFAIL, cleanup,
> - "mlock succeeded unexpectedly");
> - }
> + for (i = 0; i < TST_TOTAL; i++)
> + mlock_verify(&TC[i]);
> }
>
> cleanup();
> -
> tst_exit();
> }
>
> -#else
> -
> -int main()
> +static void setup(void)
> {
> - tst_brkm(TCONF, NULL, "test is not available on uClinux");
> -}
> -
> -#endif /* if !defined(UCLINUX) */
> + tst_sig(NOFORK, DEF_HANDLER, cleanup);
>
> -void setup()
> -{
> TEST_PAUSE;
> }
>
> -void setup1()
> +static void mlock_verify(const struct test_case_t *test)
> {
> + if (test->setupfunc(test) == -1)
setupfunc returns void
> + return;
> +
> + TEST(mlock(*(test->addr), test->len));
> +
> + if (TEST_RETURN != -1) {
> + tst_resm(TFAIL, "mlock succeeded unexpectedly");
> + return;
> + }
> +
> + if (TEST_ERRNO != test->error) {
> + tst_resm(TFAIL | TTERRNO,
> + "mlock didn't fail as expected; expected - %d : %s",
> + test->error, strerror(test->error));
> + } else {
> + tst_resm(TPASS | TTERRNO, "mlock failed as expected");
> + }
> +}
> +
> #ifdef __ia64__
> - TC[0].len = getpagesize() + 1;
> +static void setup1(const struct test_case_t *test)
> +{
> + test->len = getpagesize() + 1;
Not relevant to this cleanup patch: Any idea why ia64 needs this setup?
> +}
> #else
> +static void setup1(void)
> +{
> addr1 = NULL;
If you had same prototype you could also do:
*(test->addr) = NULL;
which is not needed for this single testcase, but I'm assuming part 2
of the patchset will modify addr1, so resetting value will be needed.
> -#endif
> }
> +#endif
>
> -void cleanup()
> +static void cleanup(void)
> {
> TEST_CLEANUP;
> +}
> +
> +#else
>
> +int TST_TOTAL = 1;
> +
> +int main(void)
> +{
> + tst_brkm(TCONF, NULL, "test is not available on uClinux");
> }
> +
> +#endif /* if !defined(UCLINUX) */
> --
> 1.8.4.2
>
>
Here is patch which made it compile-able for me:
diff --git a/testcases/kernel/syscalls/mlock/mlock02.c b/testcases/kernel/syscalls/mlock/mlock02.c
index 1d1c853..cfa9176 100644
--- a/testcases/kernel/syscalls/mlock/mlock02.c
+++ b/testcases/kernel/syscalls/mlock/mlock02.c
@@ -36,18 +36,14 @@ struct test_case_t {
void **addr;
int len;
int error;
- void (*setupfunc) ();
+ int (*setupfunc) (struct test_case_t *);
};
static void *addr1;
static void setup(void);
-#ifdef __ia64__
-static void setup1(const struct test_case_t *);
-#else
-static void setup1(void);
-#endif
+static int setup1(struct test_case_t *);
static void cleanup(void);
-static void mlock_verify(const struct test_case_t *);
+static void mlock_verify(struct test_case_t *);
static struct test_case_t TC[] = {
{&addr1, 1024, ENOMEM, setup1},
@@ -85,7 +81,7 @@ static void setup(void)
TEST_PAUSE;
}
-static void mlock_verify(const struct test_case_t *test)
+static void mlock_verify(struct test_case_t *test)
{
if (test->setupfunc(test) == -1)
return;
@@ -106,17 +102,14 @@ static void mlock_verify(const struct test_case_t *test)
}
}
-#ifdef __ia64__
-static void setup1(const struct test_case_t *test)
+static int setup1(struct test_case_t *test)
{
+#ifdef __ia64__
test->len = getpagesize() + 1;
-}
-#else
-static void setup1(void)
-{
- addr1 = NULL;
-}
#endif
+ *(test->addr) = NULL;
+ return 0;
+}
static void cleanup(void)
{
Regards,
Jan
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
prev parent reply other threads:[~2014-02-19 11:03 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-14 10:10 [LTP] [PATCH] mlock/mlock02.c: cleanup Zeng Linggang
2014-02-14 10:12 ` [LTP] [PATCH 2/2] mlock/mlock02.c: add EPERM errno test Zeng Linggang
2014-02-14 10:54 ` Jan Stancek
2014-02-19 9:38 ` [LTP] [PATCH v2 1/2] mlock/mlock02.c: cleanup Zeng Linggang
2014-02-19 9:40 ` [LTP] [PATCH v2 2/2] mlock/mlock02.c: add EPERM and ENOMEM errno tests Zeng Linggang
2014-02-19 11:29 ` Jan Stancek
2014-02-20 9:40 ` [LTP] [PATCH v3 1/2] mlock/mlock02.c: cleanup Zeng Linggang
2014-02-20 9:50 ` [LTP] [PATCH v3 2/2] mlock/mlock02.c: add EPERM and ENOMEM errno tests Zeng Linggang
2014-02-20 11:05 ` Jan Stancek
2014-02-20 13:03 ` Jan Stancek
2014-02-21 9:03 ` Zeng Linggang
2014-03-03 7:47 ` [LTP] [PATCH v4 1/3] safe_macros: Add SAFE_GETRLIMIT and SAFE_SETRLIMIT Zeng Linggang
2014-03-03 7:50 ` [LTP] [PATCH v4 2/3] mlock/mlock02.c: cleanup Zeng Linggang
2014-03-03 7:51 ` [LTP] [PATCH v4 3/3] mlock/mlock02.c: add EPERM and ENOMEM errno tests Zeng Linggang
2014-03-03 9:07 ` Jan Stancek
2014-03-03 11:22 ` [LTP] [PATCH v5 1/3] safe_macros: Add SAFE_GETRLIMIT and SAFE_SETRLIMIT Zeng Linggang
2014-03-03 11:23 ` [LTP] [PATCH v5 2/3] mlock/mlock02.c: cleanup Zeng Linggang
2014-03-03 11:25 ` [LTP] [PATCH v5 3/3] mlock/mlock02.c: add EPERM and ENOMEM errno tests Zeng Linggang
2014-03-03 20:28 ` Jan Stancek
2014-03-04 5:02 ` Zeng Linggang
2014-03-04 5:33 ` [LTP] [PATCH v5 1/3] safe_macros: Add SAFE_GETRLIMIT and SAFE_SETRLIMIT Wanlong Gao
2014-03-04 6:17 ` Zeng Linggang
2014-02-21 1:04 ` [LTP] [PATCH v3 2/2] mlock/mlock02.c: add EPERM and ENOMEM errno tests Zeng Linggang
2014-02-19 11:02 ` Jan Stancek [this message]
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=195443697.5664448.1392807762480.JavaMail.zimbra@redhat.com \
--to=jstancek@redhat.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=zenglg.jy@cn.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.