39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
Replace test for support of correct values produced by nanosleep.
|
|
We always assume that kernel doesn't have correct implementation and
|
|
instead use function from gnulib with fix. That fixes reproducibility
|
|
problem across different kernels.
|
|
|
|
--- ../gnulib-d279bc/m4/nanosleep.m4
|
|
+++ ../gnulib-d279bc/m4/nanosleep.m4
|
|
@@ -85,23 +85,9 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
|
|
ts_sleep.tv_nsec = 1;
|
|
#if HAVE_DECL_ALARM
|
|
{
|
|
- static struct sigaction act;
|
|
- act.sa_handler = check_for_SIGALRM;
|
|
- sigemptyset (&act.sa_mask);
|
|
- sigaction (SIGALRM, &act, NULL);
|
|
- alarm (1);
|
|
- if (nanosleep (&ts_sleep, NULL) != 0)
|
|
- return 3;
|
|
- /* Test for a minor problem: the handling of large arguments. */
|
|
- ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
|
|
- ts_sleep.tv_nsec = 999999999;
|
|
- alarm (1);
|
|
- if (nanosleep (&ts_sleep, &ts_remaining) != -1)
|
|
- return 4;
|
|
- if (errno != EINTR)
|
|
- return 5;
|
|
- if (ts_remaining.tv_sec <= TYPE_MAXIMUM (time_t) - 10)
|
|
- return 6;
|
|
+ /* Force to use HAVE_BUG_BIG_NANOSLEEP 1 across kernels even
|
|
+ if it correctly handles big nanosleeps. */
|
|
+ return 6;
|
|
}
|
|
#else /* A simpler test for native Windows. */
|
|
if (nanosleep (&ts_sleep, &ts_remaining) < 0)
|