public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Jan Stancek <jstancek@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH 2/2] lib: build check parameters for tst_brk()
Date: Fri, 9 Nov 2018 12:57:09 -0500 (EST)	[thread overview]
Message-ID: <1582215982.71956713.1541786229415.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <5BE4E95E.4000303@cn.fujitsu.com>


----- Original Message -----
> On 2018/11/09 4:59, Jan Stancek wrote:
> > This patch adds simple build-check that allows only
> > TFAIL, TBROK and TCONF as parameter for tst_brk().
> >
> > TFAIL is currently quite commonly used as a shortcut for
> > TFAIL + exit() by many tests. I kept it for now, since
> > it doesn't go against current doc description.
> >
> > Per kernel comments this approach works fine for simple
> > cases, which should be sufficient for LTP, e.g. we don't
> > pass TBROK as a paramter to inlined function, that passes
> > it further down to tst_brk().
> >
> > Signed-off-by: Jan Stancek<jstancek@redhat.com>
> > ---
> >   include/tst_common.h | 3 +++
> >   include/tst_test.h   | 7 +++++--
> >   2 files changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/tst_common.h b/include/tst_common.h
> > index 27924766ef6e..358f2a76ecda 100644
> > --- a/include/tst_common.h
> > +++ b/include/tst_common.h
> > @@ -65,4 +65,7 @@
> >   	ERET;								\
> >   })
> >
> > +#define BUILD_BUG_ON(condition) \
> > +	do { ((void)sizeof(char[1 - 2 * !!(condition)])); } while (0)
> > +
> >   #endif /* TST_COMMON_H__ */
> > diff --git a/include/tst_test.h b/include/tst_test.h
> > index 2ebf746eb720..cd936eb792bd 100644
> > --- a/include/tst_test.h
> > +++ b/include/tst_test.h
> > @@ -69,8 +69,11 @@ void tst_brk_(const char *file, const int lineno, int
> > ttype,
> >                 const char *fmt, ...)
> >                 __attribute__ ((format (printf, 4, 5)));
> >
> > -#define tst_brk(ttype, arg_fmt, ...) \
> > -	tst_brk_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__)
> > +#define tst_brk(ttype, arg_fmt, ...)						\
> > +	({									\
> > +		BUILD_BUG_ON(!((ttype)&  (TBROK | TCONF | TFAIL)));		\
> > +		tst_brk_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__);\
> > +	})
> Hi Jan,
> 
> Perhaps, we could add some hints about the invalid ttype.
> e.g. "tst_brk(): invalid type, please use TBROK/TCONF/TFAIL"

Do you have suggestion how to achieve that?

There's an __attribute__(error), but it's supported only from gcc 4.3 as I recall.
Alternative would be link time failure, with a symbol name suggesting what went wrong.

Regards,
Jan

> 
> Other than that, this patch set looks good to me.
> 
> Best Regards,
> Xiao Yang
> 
> >
> >   /* flush stderr and stdout */
> >   void tst_flush(void);
> 
> 
> 
> 

  reply	other threads:[~2018-11-09 17:57 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-08 20:59 [LTP] [PATCH 1/2] syscalls/mq: don't use TWARN with tst_brk() Jan Stancek
2018-11-08 20:59 ` [LTP] [PATCH 2/2] lib: build check parameters for tst_brk() Jan Stancek
2018-11-09  1:56   ` Xiao Yang
2018-11-09 17:57     ` Jan Stancek [this message]
2018-12-04 17:35       ` Petr Vorel
2018-12-05  6:34         ` Li Wang
2018-12-05  9:25           ` Petr Vorel
2018-12-06  8:49             ` Li Wang
2018-12-06  9:19               ` Xiao Yang
2018-12-06 10:15                 ` Li Wang
2018-12-06 10:33               ` Li Wang
2018-12-06 12:59                 ` Petr Vorel
2018-12-06 13:07               ` Petr Vorel
2018-12-07  6:28                 ` Li Wang
2018-12-11 14:58       ` Cyril Hrubis
2019-01-03 11:52         ` Jan Stancek
2019-01-07 18:25           ` Cyril Hrubis
2019-01-07 19:06             ` Jan Stancek
2019-01-07 19:22               ` Cyril Hrubis
2019-01-08 11:14                 ` Jan Stancek
2018-12-04 16:58 ` [LTP] [PATCH 1/2] syscalls/mq: don't use TWARN with tst_brk() Petr Vorel
2018-12-11 14:48 ` Cyril Hrubis

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=1582215982.71956713.1541786229415.JavaMail.zimbra@redhat.com \
    --to=jstancek@redhat.com \
    --cc=ltp@lists.linux.it \
    /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