Zhaoming Luo, le dim. 23 mars 2025 10:47:14 +0800, a ecrit:
> Check the availability of host_get_time64 and use it to replace
> host_get_time for CLOCK_REALTIME when it's available.
> case CLOCK_REALTIME:
> {
> - /* __host_get_time can only fail if passed an invalid host_t.
> + /* __host_get_time(64) can only fail if passed an invalid host_t.
> __mach_host_self could theoretically fail (producing an
> invalid host_t) due to resource exhaustion, but we assume
> this will never happen. */
> +#ifdef HAVE_HOST_GET_TIME64
> + time_value64_t tv;
> + __host_get_time64 (__mach_host_self (), &tv);
> + TIME_VALUE64_TO_TIMESPEC (&tv, ts);
> +#else
> time_value_t tv;
> __host_get_time (__mach_host_self (), &tv);
> TIME_VALUE_TO_TIMESPEC (&tv, ts);
> +#endif
You do not want to disable the __host_get_time call entirely: you might
be compiling against newer gnumach headers, but running an older gnumach
kernel. So you need to keep the __host_get_time code, and fallback to it
if __host_get_time64 fails with MIG_BAD_ID, see the
HAVE_HOST_GET_UPTIME64 case for instance.
Samuel