Hello,

Zhaoming Luo, le sam. 03 mai 2025 12:49:56 +0800, a ecrit:
> Use 64bit mapped time values in maptime_read when possible. The 64bit
> time values in mapped time will be zero when the kernel does not support
> 64bit mapped time.

> +  if (mtime->time_value.seconds == 0)

Please add

AC_CHECK_MEMBERS([struct mapped_time_value.time_value.seconds],,,
 [#include <mach/time_value.h>])

in configure.ac, to check at ./configure time whether the
installed headers have the new field, and use #ifdef
HAVE_MAPPED_TIME_VALUE_TIME_VALUE_SECONDS to avoid breaking the build
against older headers.

It'll probably be useful to rather use if (mtime->time_value.seconds !=
0) to keep just one #ifdef block.

Samuel

>      {
> -      tv->tv_sec = mtime->seconds;
> -      __sync_synchronize ();
> -      tv->tv_usec = mtime->microseconds;
> -      __sync_synchronize ();
> +      /* If 64 bits time is not supported in the kernel.  */
> +      do
> +     {
> +       tv->tv_sec = mtime->seconds;
> +       __sync_synchronize ();
> +       tv->tv_usec = mtime->microseconds;
> +       __sync_synchronize ();
> +     }
> +      while (tv->tv_sec != mtime->check_seconds);
> +    }
> +  else
> +    {
> +      do
> +     {
> +       tv->tv_sec = mtime->time_value.seconds;
> +       __sync_synchronize ();
> +       tv->tv_usec = mtime->time_value.nanoseconds / 1000;
> +       __sync_synchronize ();
> +     }
> +      while (tv->tv_sec != mtime->check_seconds64);
>      }
> -  while (tv->tv_sec != mtime->check_seconds);
>  }
>  
>  #endif /* Use extern inlines.  */
> -- 
> 2.49.0

Reply via email to