| /* |
| * Copyright (c) 20017 Apple Inc. All rights reserved. |
| * |
| * @APPLE_APACHE_LICENSE_HEADER_START@ |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * @APPLE_APACHE_LICENSE_HEADER_END@ |
| */ |
| |
| /* |
| * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch |
| * which are subject to change in future releases. Any applications relying on |
| * these interfaces WILL break. |
| */ |
| |
| #ifndef __DISPATCH_TIME_PRIVATE__ |
| #define __DISPATCH_TIME_PRIVATE__ |
| |
| #ifndef __DISPATCH_INDIRECT__ |
| #error "Please #include <dispatch/private.h> instead of this file directly." |
| #include <dispatch/base.h> // for HeaderDoc |
| #endif |
| |
| /* |
| * @constant DISPATCH_MONOTONICTIME_NOW |
| * A dispatch_time_t value that corresponds to the current value of the |
| * platform's monotonic clock. On Apple platforms, this clock is based on |
| * mach_continuous_time(). Use this value with the dispatch_time() function to |
| * derive a time value for a timer in monotonic time (i.e. a timer that |
| * continues to tick while the system is asleep). For example: |
| * |
| * dispatch_time_t t = dispatch_time(DISPATCH_MONOTONICTIME_NOW,5*NSEC_PER_SEC); |
| * dispatch_source_t ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, |
| * 0, 0, q); |
| * dispatch_source_set_event_handler(ds, ^{ ... }); |
| * dispatch_source_set_timer(ds, t, 10 * NSEC_PER_SEC, 0); |
| * dispatch_activate(ds); |
| */ |
| enum { |
| DISPATCH_MONOTONICTIME_NOW DISPATCH_ENUM_API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0)) = (1ull << 63) |
| }; |
| |
| #ifdef __APPLE__ |
| |
| // Helper macros for up time, montonic time and wall time. |
| #define _dispatch_uptime_after_nsec(t) \ |
| dispatch_time(DISPATCH_TIME_NOW, (t)) |
| #define _dispatch_uptime_after_usec(t) \ |
| dispatch_time(DISPATCH_TIME_NOW, (t) * NSEC_PER_USEC) |
| #define _dispatch_uptime_after_msec(t) \ |
| dispatch_time(DISPATCH_TIME_NOW, (t) * NSEC_PER_MSEC) |
| #define _dispatch_uptime_after_sec(t) \ |
| dispatch_time(DISPATCH_TIME_NOW, (t) * NSEC_PER_SEC) |
| |
| #define _dispatch_monotonictime_after_nsec(t) \ |
| dispatch_time(DISPATCH_MONOTONICTIME_NOW, (t)) |
| #define _dispatch_monotonictime_after_usec(t) \ |
| dispatch_time(DISPATCH_MONOTONICTIME_NOW, (t) * NSEC_PER_USEC) |
| #define _dispatch_monotonictime_after_msec(t) \ |
| dispatch_time(DISPATCH_MONOTONICTIME_NOW, (t) * NSEC_PER_MSEC) |
| #define _dispatch_monotonictime_after_sec(t) \ |
| dispatch_time(DISPATCH_MONOTONICTIME_NOW, (t) * NSEC_PER_SEC) |
| |
| #define _dispatch_walltime_after_nsec(t) \ |
| dispatch_time(DISPATCH_WALLTIME_NOW, (t)) |
| #define _dispatch_walltime_after_usec(t) \ |
| dispatch_time(DISPATCH_WALLTIME_NOW, (t) * NSEC_PER_USEC) |
| #define _dispatch_walltime_after_msec(t) \ |
| dispatch_time(DISPATCH_WALLTIME_NOW, (t) * NSEC_PER_MSEC) |
| #define _dispatch_walltime_after_sec(t) \ |
| dispatch_time(DISPATCH_WALLTIME_NOW, (t) * NSEC_PER_SEC) |
| |
| #endif // __APPLE__ |
| |
| #endif |
| |