diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-11-02 16:18:29 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-11-09 11:19:35 -0300 |
commit | 75a193b7611bade31a150dfcc528b973e3d46231 (patch) | |
tree | 0ede2fea4979986c6031b3fd037077b14d855cf4 /time | |
parent | 5edf3d9fd6efe06fda37b2a460e60690a90457a4 (diff) | |
download | glibc-75a193b7611bade31a150dfcc528b973e3d46231.tar.gz glibc-75a193b7611bade31a150dfcc528b973e3d46231.tar.xz glibc-75a193b7611bade31a150dfcc528b973e3d46231.zip |
linux: Allow adjtime with NULL argument [BZ #26833]
The adjtime interface allows return the amount of time remaining from any previous adjustment that has not yet been completed by passing a NULL as first argument. This was introduced with y2038 support 0308077e3a. Checked on i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
Diffstat (limited to 'time')
-rw-r--r-- | time/Makefile | 3 | ||||
-rw-r--r-- | time/tst-adjtime.c | 44 |
2 files changed, 46 insertions, 1 deletions
diff --git a/time/Makefile b/time/Makefile index 26aa835166..f27a75a115 100644 --- a/time/Makefile +++ b/time/Makefile @@ -47,7 +47,8 @@ tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \ tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ - tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 + tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \ + tst-adjtime include ../Rules diff --git a/time/tst-adjtime.c b/time/tst-adjtime.c new file mode 100644 index 0000000000..ae2b37cdab --- /dev/null +++ b/time/tst-adjtime.c @@ -0,0 +1,44 @@ +/* Basic tests for adjtime. + Copyright (C) 2020 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 <sys/time.h> +#include <stdlib.h> + +#include <errno.h> +#include <support/check.h> + + +static int +do_test (void) +{ + /* Check if the interface allows getting the amount of time remaining + from any previous adjustment that has not yet been completed. This + is a non-privileged function of adjtime. */ + struct timeval tv; + int r = adjtime (NULL, &tv); + if (r == -1) + { + if (errno == ENOSYS) + FAIL_UNSUPPORTED ("adjtime unsupported"); + FAIL_EXIT1 ("adjtime (NULL, ...) failed: %m"); + } + + return 0; +} + +#include <support/test-driver.c> |