All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Bezdeka, Florian" <florian.bezdeka@siemens.com>
To: "xenomai@xenomai.org" <xenomai@xenomai.org>,
	"chensong_2000@189.cn" <chensong_2000@189.cn>
Subject: Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64
Date: Wed, 2 Jun 2021 08:01:01 +0000	[thread overview]
Message-ID: <8ea4ccd509107805ba9e37c5861639d2992c18cb.camel@siemens.com> (raw)
In-Reply-To: <dff453e5-9aca-2914-8bd5-2b580a60ce94@189.cn>

On Wed, 2021-06-02 at 14:59 +0800, chensong_2000@189.cn wrote:
> 
> 在 2021/6/2 下午2:46, Florian Bezdeka 写道:
> > On 02.06.21 07:55, chensong_2000@189.cn wrote:
> > > 
> > > 
> > > 在 2021/6/1 下午8:16, Florian Bezdeka 写道:
> > > > On 29.04.21 09:45, Song Chen wrote:
> > > > > add test case for clock_adjtime64 in testsuite
> > > > > 
> > > > > Signed-off-by: Song Chen <chensong_2000@189.cn>
> > > > > ---
> > > > >    testsuite/smokey/y2038/syscall-tests.c | 71
> > > > > ++++++++++++++++++++++++++++++++++
> > > > >    1 file changed, 71 insertions(+)
> > > > > 
> > > > > diff --git a/testsuite/smokey/y2038/syscall-tests.c
> > > > > b/testsuite/smokey/y2038/syscall-tests.c
> > > > > index c59a9d6..22fd9b6 100644
> > > > > --- a/testsuite/smokey/y2038/syscall-tests.c
> > > > > +++ b/testsuite/smokey/y2038/syscall-tests.c
> > > > > @@ -25,6 +25,43 @@ struct xn_timespec64 {
> > > > >        int64_t tv_nsec;
> > > > >    };
> > > > >    +struct xn_timex_timeval {
> > > > > +    int64_t tv_sec;
> > > > > +    int64_t    tv_usec;
> > > > > +};
> > > > > +
> > > > > +struct xn_timex64 {
> > > > > +    unsigned int modes;    /* mode selector */
> > > > > +    int:32;            /* pad */
> > > > > +    long long offset;    /* time offset (usec) */
> > > > > +    long long freq;    /* frequency offset (scaled ppm) */
> > > > > +    long long maxerror;/* maximum error (usec) */
> > > > > +    long long esterror;/* estimated error (usec) */
> > > > > +    int status;        /* clock command/status */
> > > > > +    int:32;            /* pad */
> > > > > +    long long constant;/* pll time constant */
> > > > > +    long long precision;/* clock precision (usec) (read only) */
> > > > > +    long long tolerance;/* clock frequency tolerance (ppm) (read
> > > > > only) */
> > > > > +    struct xn_timex_timeval time;    /* (read only, except for
> > > > > ADJ_SETOFFSET) */
> > > > > +    long long tick;    /* (modified) usecs between clock ticks */
> > > > > +
> > > > > +    long long ppsfreq;/* pps frequency (scaled ppm) (ro) */
> > > > > +    long long jitter; /* pps jitter (us) (ro) */
> > > > > +    int shift;              /* interval duration (s) (shift) (ro) */
> > > > > +    int:32;            /* pad */
> > > > > +    long long stabil;            /* pps stability (scaled ppm) (ro) */
> > > > > +    long long jitcnt; /* jitter limit exceeded (ro) */
> > > > > +    long long calcnt; /* calibration intervals (ro) */
> > > > > +    long long errcnt; /* calibration errors (ro) */
> > > > > +    long long stbcnt; /* stability limit exceeded (ro) */
> > > > > +
> > > > > +    int tai;        /* TAI offset (ro) */
> > > > > +
> > > > > +    int:32; int:32; int:32; int:32;
> > > > > +    int:32; int:32; int:32; int:32;
> > > > > +    int:32; int:32; int:32;
> > > > > +};
> > > > > +
> > > > >    #define NSEC_PER_SEC 1000000000
> > > > >      static void ts_normalise(struct xn_timespec64 *ts)
> > > > > @@ -326,6 +363,36 @@ static int test_sc_cobalt_clock_getres64(void)
> > > > >        return 0;
> > > > >    }
> > > > >    +static int test_sc_cobalt_clock_adjtime64(void)
> > > > > +{
> > > > > +    long ret;
> > > > > +    int code = __xn_syscode(sc_cobalt_clock_adjtime64);
> > > > > +    struct xn_timex64 tx64 = {};
> > > > > +
> > > > > +    /* Make sure we don't crash because of NULL pointers */
> > > > > +    ret = syscall(code, NULL, NULL);
> > > > > +    if (ret == -1 && errno == ENOSYS) {
> > > > > +        smokey_note("clock_adjtime64: skipped. (no kernel support)");
> > > > > +        return 0; // Not implemented, nothing to test, success
> > > > > +    }
> > > > > +    if (!smokey_assert(ret == -1) || !smokey_assert(errno == EFAULT))
> > > > > +        return errno;
> > > > > +
> > > > > +    /* Providing an invalid address has to deliver EFAULT */
> > > > > +    ret = syscall(code, CLOCK_REALTIME, (void *)0xdeadbeefUL);
> > > > > +    if (!smokey_assert(ret == -1) || !smokey_assert(errno == EFAULT))
> > > > > +        return errno;
> > > > > +
> > > > > +    /* Provide a valid 64bit timex*/
> > > > > +    tx64.modes = ADJ_SETOFFSET;
> > > > > +    tx64.time.tv_usec = 123;
> > > > > +    ret = syscall(code, CLOCK_REALTIME, &tx64);
> > > > 
> > > > In int __cobalt_clock_adjtime() we have
> > > > 
> > > >      switch (clock_id) {
> > > >      case CLOCK_REALTIME:
> > > >      case CLOCK_MONOTONIC:
> > > >      case CLOCK_MONOTONIC_RAW:
> > > >      case CLOCK_HOST_REALTIME:
> > > >          return -EOPNOTSUPP;
> > > > 
> > > > So the test-failure I see on x86 is fully expected. How did you get this
> > > > test running successfully?
> > > 
> > > In this revision, i got this:
> > > root@kylin-Lenovo:/home/kylin/workspace/y2038/xenomai-hacker-space#
> > > ./testsuite/smokey/smokey --run=27
> > > syscall-tests.c:391, assertion failed: !ret
> > > /home/kylin/workspace/y2038/xenomai-hacker-space/testsuite/smokey/.libs/lt-smokey:
> > > test y2038 failed: Unknown error -95 (which is EOPNOTSUPP)
> > > 
> > > In my last revision, which replaced syscall with XENOMAI_SYSCALL, it
> > > returns -95, i'm afraid it will terminate smokey test, i turned it to if
> > > !smokey_assert(ret) for now.
> > > 
> > > when __cobalt_clock_adjtime becomes supported, i will turn it back.
> > 
> > Already done. See the series re-posted yesterday.
> 
> great, i will submit a patch to address it.

No additional work necessary. The patches sent out for integration
already have it. (I squashed my fixes into your patch before publishing
it)

> > 
> > > 
> > > > 
> > > > 
> > > > > +    if (!smokey_assert(!ret))
> > > > > +        return errno;
> > > > > +
> > > > > +    return 0;
> > > > > +}
> > > > > +
> > > > >    static int run_y2038(struct smokey_test *t, int argc, char *const
> > > > > argv[])
> > > > >    {
> > > > >    @@ -351,5 +418,9 @@ static int run_y2038(struct smokey_test *t, int
> > > > > argc, char *const argv[])
> > > > >        if (ret)
> > > > >            return ret;
> > > > >    +    ret = test_sc_cobalt_clock_adjtime64();
> > > > > +    if (ret)
> > > > > +        return ret;
> > > > > +
> > > > >        return 0;
> > > > >    }
> > > > > 
> > > > 
> > > > 
> > 
> > 


  reply	other threads:[~2021-06-02  8:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-29  7:45 [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 Song Chen
2021-06-01 12:16 ` Florian Bezdeka
2021-06-02  5:55   ` chensong_2000
2021-06-02  6:46     ` Florian Bezdeka
2021-06-02  6:59       ` chensong_2000
2021-06-02  8:01         ` Bezdeka, Florian [this message]
2021-06-02  8:32           ` chensong_2000

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=8ea4ccd509107805ba9e37c5861639d2992c18cb.camel@siemens.com \
    --to=florian.bezdeka@siemens.com \
    --cc=chensong_2000@189.cn \
    --cc=xenomai@xenomai.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 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.