xz: Use clock_gettime() even if CLOCK_MONOTONIC isn't available.

mythread.h and thus liblzma already does it.
This commit is contained in:
Lasse Collin 2023-01-27 20:02:49 +02:00
parent 2e02877288
commit 610dde15a8
2 changed files with 9 additions and 5 deletions

View File

@ -12,7 +12,7 @@
#include "private.h"
#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
#ifdef HAVE_CLOCK_GETTIME
# include <time.h>
#else
# include <sys/time.h>
@ -35,14 +35,19 @@ static uint64_t next_flush;
static uint64_t
mytime_now(void)
{
#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
#ifdef HAVE_CLOCK_GETTIME
struct timespec tv;
# ifdef HAVE_CLOCK_MONOTONIC
// If CLOCK_MONOTONIC was available at compile time but for some
// reason isn't at runtime, fallback to CLOCK_REALTIME which
// according to POSIX is mandatory for all implementations.
static clockid_t clk_id = CLOCK_MONOTONIC;
struct timespec tv;
while (clock_gettime(clk_id, &tv))
clk_id = CLOCK_REALTIME;
# else
clock_gettime(CLOCK_REALTIME, &tv);
# endif
return (uint64_t)tv.tv_sec * 1000 + (uint64_t)(tv.tv_nsec / 1000000);
#else

View File

@ -56,8 +56,7 @@
// polls the time and the SIGTSTP handling adds slight overhead to
// that code. Most (all?) systems that have SIGTSTP also have SIGALRM
// so this requirement won't exclude many systems.
#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC) \
&& defined(SIGTSTP) && defined(SIGALRM)
#if defined(HAVE_CLOCK_GETTIME) && defined(SIGTSTP) && defined(SIGALRM)
# define USE_SIGTSTP_HANDLER 1
#endif