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