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

Reply via email to