All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.