* [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.