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