Message ID | 20210217223158.16441-2-lukma@denx.de |
---|---|
State | New |
Headers | show |
Series | [v4,1/3] tst: Extend cross-test-ssh.sh to specify if target date can be altered | expand |
Dear Community, > The xclock_settime is a wrapper function on the clock_settime syscall > to be used in the test code. > > It checks if the GLIBC_TEST_ALLOW_TIME_SETTING env variable is defined > in the environment in which test is executed. If it is not - the test > ends as unsupported. Otherwise, the clock-settime is executed and > return value is assessed. > Do you have any more comments regarding this patch? > --- > Changes for v4: > - Remove not needed #include <support/xthread.h> > --- > support/Makefile | 1 + > support/xclock_settime.c | 34 ++++++++++++++++++++++++++++++++++ > support/xtime.h | 5 +++++ > 3 files changed, 40 insertions(+) > create mode 100644 support/xclock_settime.c > > diff --git a/support/Makefile b/support/Makefile > index bb9889efb4..8d63fbd5da 100644 > --- a/support/Makefile > +++ b/support/Makefile > @@ -90,6 +90,7 @@ libsupport-routines = \ > xchdir \ > xchroot \ > xclock_gettime \ > + xclock_settime \ > xclose \ > xchmod \ > xconnect \ > diff --git a/support/xclock_settime.c b/support/xclock_settime.c > new file mode 100644 > index 0000000000..183aba4876 > --- /dev/null > +++ b/support/xclock_settime.c > @@ -0,0 +1,34 @@ > +/* clock_settime with error checking. > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <stdlib.h> > +#include <support/check.h> > +#include <support/xtime.h> > + > +void > +xclock_settime (clockid_t clockid, > + const struct timespec *ts) > +{ > + if (getenv (SETTIME_ENV_NAME) == NULL) > + FAIL_UNSUPPORTED ("clock_settime is executed only when "\ > + SETTIME_ENV_NAME" is set\n"); > + > + const int ret = clock_settime (clockid, ts); > + if (ret < 0) > + FAIL_EXIT1 ("clock_settime (%d): %m", clockid); > +} > diff --git a/support/xtime.h b/support/xtime.h > index 2482837dee..b4ac3b59e2 100644 > --- a/support/xtime.h > +++ b/support/xtime.h > @@ -23,10 +23,15 @@ > > __BEGIN_DECLS > > +/* Name of the env variable, which indicates if it is possible to > + adjust time on target machine. */ > +#define SETTIME_ENV_NAME "GLIBC_TEST_ALLOW_TIME_SETTING" > + > /* The following functions call the corresponding libc functions and > terminate the process on error. */ > > void xclock_gettime (clockid_t clock, struct timespec *ts); > +void xclock_settime (clockid_t clock, const struct timespec *ts); > > /* This helper can often simplify tests by avoiding an explicit > variable declaration or allowing that declaration to be const. */ Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
On 17/02/2021 19:31, Lukasz Majewski wrote: > The xclock_settime is a wrapper function on the clock_settime syscall > to be used in the test code. > > It checks if the GLIBC_TEST_ALLOW_TIME_SETTING env variable is defined > in the environment in which test is executed. If it is not - the test > ends as unsupported. Otherwise, the clock-settime is executed and return > value is assessed. > > --- > Changes for v4: > - Remove not needed #include <support/xthread.h> LGTM with a small nit below. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > support/Makefile | 1 + > support/xclock_settime.c | 34 ++++++++++++++++++++++++++++++++++ > support/xtime.h | 5 +++++ > 3 files changed, 40 insertions(+) > create mode 100644 support/xclock_settime.c > > diff --git a/support/Makefile b/support/Makefile > index bb9889efb4..8d63fbd5da 100644 > --- a/support/Makefile > +++ b/support/Makefile > @@ -90,6 +90,7 @@ libsupport-routines = \ > xchdir \ > xchroot \ > xclock_gettime \ > + xclock_settime \ > xclose \ > xchmod \ > xconnect \ Ok. > diff --git a/support/xclock_settime.c b/support/xclock_settime.c > new file mode 100644 > index 0000000000..183aba4876 > --- /dev/null > +++ b/support/xclock_settime.c > @@ -0,0 +1,34 @@ > +/* clock_settime with error checking. > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#include <stdlib.h> > +#include <support/check.h> > +#include <support/xtime.h> > + > +void > +xclock_settime (clockid_t clockid, > + const struct timespec *ts) > +{ > + if (getenv (SETTIME_ENV_NAME) == NULL) > + FAIL_UNSUPPORTED ("clock_settime is executed only when "\ > + SETTIME_ENV_NAME" is set\n"); > + > + const int ret = clock_settime (clockid, ts); No need of 'const' here. > + if (ret < 0) > + FAIL_EXIT1 ("clock_settime (%d): %m", clockid); > +} Ok. > diff --git a/support/xtime.h b/support/xtime.h > index 2482837dee..b4ac3b59e2 100644 > --- a/support/xtime.h > +++ b/support/xtime.h > @@ -23,10 +23,15 @@ > > __BEGIN_DECLS > > +/* Name of the env variable, which indicates if it is possible to > + adjust time on target machine. */ > +#define SETTIME_ENV_NAME "GLIBC_TEST_ALLOW_TIME_SETTING" > + > /* The following functions call the corresponding libc functions and > terminate the process on error. */ > > void xclock_gettime (clockid_t clock, struct timespec *ts); > +void xclock_settime (clockid_t clock, const struct timespec *ts); > > /* This helper can often simplify tests by avoiding an explicit > variable declaration or allowing that declaration to be const. */ > Ok.
diff --git a/support/Makefile b/support/Makefile index bb9889efb4..8d63fbd5da 100644 --- a/support/Makefile +++ b/support/Makefile @@ -90,6 +90,7 @@ libsupport-routines = \ xchdir \ xchroot \ xclock_gettime \ + xclock_settime \ xclose \ xchmod \ xconnect \ diff --git a/support/xclock_settime.c b/support/xclock_settime.c new file mode 100644 index 0000000000..183aba4876 --- /dev/null +++ b/support/xclock_settime.c @@ -0,0 +1,34 @@ +/* clock_settime with error checking. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <stdlib.h> +#include <support/check.h> +#include <support/xtime.h> + +void +xclock_settime (clockid_t clockid, + const struct timespec *ts) +{ + if (getenv (SETTIME_ENV_NAME) == NULL) + FAIL_UNSUPPORTED ("clock_settime is executed only when "\ + SETTIME_ENV_NAME" is set\n"); + + const int ret = clock_settime (clockid, ts); + if (ret < 0) + FAIL_EXIT1 ("clock_settime (%d): %m", clockid); +} diff --git a/support/xtime.h b/support/xtime.h index 2482837dee..b4ac3b59e2 100644 --- a/support/xtime.h +++ b/support/xtime.h @@ -23,10 +23,15 @@ __BEGIN_DECLS +/* Name of the env variable, which indicates if it is possible to + adjust time on target machine. */ +#define SETTIME_ENV_NAME "GLIBC_TEST_ALLOW_TIME_SETTING" + /* The following functions call the corresponding libc functions and terminate the process on error. */ void xclock_gettime (clockid_t clock, struct timespec *ts); +void xclock_settime (clockid_t clock, const struct timespec *ts); /* This helper can often simplify tests by avoiding an explicit variable declaration or allowing that declaration to be const. */