X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/1c79356b52d46aa6b508fb032f5ae709b1f2897b..43866e378188c25dd1e2208016ab3cbeb086ae6c:/osfmk/kern/clock.h diff --git a/osfmk/kern/clock.h b/osfmk/kern/clock.h index 0ed37d707..b96848a08 100644 --- a/osfmk/kern/clock.h +++ b/osfmk/kern/clock.h @@ -3,19 +3,22 @@ * * @APPLE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ */ @@ -32,13 +35,16 @@ #ifndef _KERN_CLOCK_H_ #define _KERN_CLOCK_H_ -#include - #include #include #include -#ifdef MACH_KERNEL_PRIVATE +#include + +#ifdef __APPLE_API_PRIVATE + +#ifdef MACH_KERNEL_PRIVATE + #include /* @@ -151,13 +157,13 @@ extern kern_return_t clock_sleep_internal( mach_timespec_t *sleep_time); typedef void (*clock_timer_func_t)( - AbsoluteTime timestamp); + uint64_t timestamp); extern void clock_set_timer_func( clock_timer_func_t func); extern void clock_set_timer_deadline( - AbsoluteTime deadline); + uint64_t deadline); extern void mk_timebase_info( uint32_t *delta, @@ -166,10 +172,27 @@ extern void mk_timebase_info( uint32_t *proc_to_abs_numer, uint32_t *proc_to_abs_denom); -#define scalar_to_AbsoluteTime(x) (*(AbsoluteTime *)(x)) +extern void clock_adjust_calendar( + clock_res_t nsec); + +extern mach_timespec_t + clock_get_calendar_offset(void); #endif /* MACH_KERNEL_PRIVATE */ +extern void clock_set_calendar_value( + mach_timespec_t value); + +extern int64_t clock_set_calendar_adjtime( + int64_t total, + uint32_t delta); + +extern void clock_initialize_calendar(void); + +#endif /* __APPLE_API_PRIVATE */ + +#ifdef __APPLE_API_UNSTABLE + #define MACH_TIMESPEC_SEC_MAX (0 - 1) #define MACH_TIMESPEC_NSEC_MAX (NSEC_PER_SEC - 1) @@ -193,19 +216,79 @@ extern void mk_timebase_info( } \ } while (0) +#endif /* __APPLE_API_UNSTABLE */ + extern mach_timespec_t clock_get_system_value(void); extern mach_timespec_t clock_get_calendar_value(void); -extern void clock_set_calendar_value( - mach_timespec_t value); +extern void clock_timebase_info( + mach_timebase_info_t info); -extern void clock_adjust_calendar( - clock_res_t nsec); +extern void clock_get_uptime( + uint64_t *result); -extern void clock_initialize_calendar(void); +extern void clock_interval_to_deadline( + uint32_t interval, + uint32_t scale_factor, + uint64_t *result); + +extern void clock_interval_to_absolutetime_interval( + uint32_t interval, + uint32_t scale_factor, + uint64_t *result); + +extern void clock_absolutetime_interval_to_deadline( + uint64_t abstime, + uint64_t *result); + +extern void clock_deadline_for_periodic_event( + uint64_t interval, + uint64_t abstime, + uint64_t *deadline); + +extern void clock_delay_for_interval( + uint32_t interval, + uint32_t scale_factor); + +extern void clock_delay_until( + uint64_t deadline); + +extern void absolutetime_to_nanoseconds( + uint64_t abstime, + uint64_t *result); + +extern void nanoseconds_to_absolutetime( + uint64_t nanoseconds, + uint64_t *result); -extern mach_timespec_t clock_get_calendar_offset(void); +#if !defined(MACH_KERNEL_PRIVATE) && !defined(ABSOLUTETIME_SCALAR_TYPE) + +#include + +#define clock_get_uptime(a) \ + clock_get_uptime(__OSAbsoluteTimePtr(a)) + +#define clock_interval_to_deadline(a, b, c) \ + clock_interval_to_deadline((a), (b), __OSAbsoluteTimePtr(c)) + +#define clock_interval_to_absolutetime_interval(a, b, c) \ + clock_interval_to_absolutetime_interval((a), (b), __OSAbsoluteTimePtr(c)) + +#define clock_absolutetime_interval_to_deadline(a, b) \ + clock_absolutetime_interval_to_deadline(__OSAbsoluteTime(a), __OSAbsoluteTimePtr(b)) + +#define clock_deadline_for_periodic_event(a, b, c) \ + clock_deadline_for_periodic_event(__OSAbsoluteTime(a), __OSAbsoluteTime(b), __OSAbsoluteTimePtr(c)) + +#define clock_delay_until(a) \ + clock_delay_until(__OSAbsoluteTime(a)) + +#define absolutetime_to_nanoseconds(a, b) \ + absolutetime_to_nanoseconds(__OSAbsoluteTime(a), (b)) + +#define nanoseconds_to_absolutetime(a, b) \ + nanoseconds_to_absolutetime((a), __OSAbsoluteTimePtr(b)) #define AbsoluteTime_to_scalar(x) (*(uint64_t *)(x)) @@ -228,46 +311,8 @@ extern mach_timespec_t clock_get_calendar_offset(void); #define ADD_ABSOLUTETIME_TICKS(t1, ticks) \ (AbsoluteTime_to_scalar(t1) += \ - (integer_t)(ticks)) - -extern void clock_timebase_info( - mach_timebase_info_t info); - -extern void clock_get_uptime( - AbsoluteTime *result); + (int32_t)(ticks)) -extern void clock_interval_to_deadline( - natural_t interval, - natural_t scale_factor, - AbsoluteTime *result); - -extern void clock_interval_to_absolutetime_interval( - natural_t interval, - natural_t scale_factor, - AbsoluteTime *result); - -extern void clock_absolutetime_interval_to_deadline( - AbsoluteTime abstime, - AbsoluteTime *result); - -extern void clock_deadline_for_periodic_event( - AbsoluteTime interval, - AbsoluteTime abstime, - AbsoluteTime *deadline); - -extern void clock_delay_for_interval( - natural_t interval, - natural_t scale_factor); - -extern void clock_delay_until( - AbsoluteTime deadline); - -extern void absolutetime_to_nanoseconds( - AbsoluteTime abstime, - UInt64 *result); - -extern void nanoseconds_to_absolutetime( - UInt64 nanoseconds, - AbsoluteTime *result); +#endif #endif /* _KERN_CLOCK_H_ */