* [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 @ 2021-04-29 7:45 Song Chen 2021-06-01 12:16 ` Florian Bezdeka 0 siblings, 1 reply; 7+ messages in thread From: Song Chen @ 2021-04-29 7:45 UTC (permalink / raw) To: florian.bezdeka, xenomai 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); + 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; } -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 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 0 siblings, 1 reply; 7+ messages in thread From: Florian Bezdeka @ 2021-06-01 12:16 UTC (permalink / raw) To: Song Chen, xenomai 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? > + 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; > } > -- Siemens AG, T RDA IOT Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 2021-06-01 12:16 ` Florian Bezdeka @ 2021-06-02 5:55 ` chensong_2000 2021-06-02 6:46 ` Florian Bezdeka 0 siblings, 1 reply; 7+ messages in thread From: chensong_2000 @ 2021-06-02 5:55 UTC (permalink / raw) To: Florian Bezdeka, xenomai 在 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. > > >> + 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; >> } >> > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 2021-06-02 5:55 ` chensong_2000 @ 2021-06-02 6:46 ` Florian Bezdeka 2021-06-02 6:59 ` chensong_2000 0 siblings, 1 reply; 7+ messages in thread From: Florian Bezdeka @ 2021-06-02 6:46 UTC (permalink / raw) To: chensong_2000, xenomai 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. > >> >> >>> + 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; >>> } >>> >> >> -- Siemens AG, T RDA IOT Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 2021-06-02 6:46 ` Florian Bezdeka @ 2021-06-02 6:59 ` chensong_2000 2021-06-02 8:01 ` Bezdeka, Florian 0 siblings, 1 reply; 7+ messages in thread From: chensong_2000 @ 2021-06-02 6:59 UTC (permalink / raw) To: Florian Bezdeka, xenomai 在 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. > >> >>> >>> >>>> + 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; >>>> } >>>> >>> >>> > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 2021-06-02 6:59 ` chensong_2000 @ 2021-06-02 8:01 ` Bezdeka, Florian 2021-06-02 8:32 ` chensong_2000 0 siblings, 1 reply; 7+ messages in thread From: Bezdeka, Florian @ 2021-06-02 8:01 UTC (permalink / raw) To: xenomai, chensong_2000 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; > > > > > } > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] y2038: testsuite/smokey/y2038: testcase for adjtime64 2021-06-02 8:01 ` Bezdeka, Florian @ 2021-06-02 8:32 ` chensong_2000 0 siblings, 0 replies; 7+ messages in thread From: chensong_2000 @ 2021-06-02 8:32 UTC (permalink / raw) To: Bezdeka, Florian, xenomai 在 2021/6/2 下午4:01, Bezdeka, Florian 写道: > 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) no extra wok to do , great :), many thanks. Song > >>> >>>> >>>>> >>>>> >>>>>> + 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; >>>>>> } >>>>>> >>>>> >>>>> >>> >>> > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-06-02 8:32 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 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 2021-06-02 8:32 ` chensong_2000
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.