X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..3e170ce000f1506b7b5d2c5c7faec85ceabb573d:/osfmk/kern/clock.h diff --git a/osfmk/kern/clock.h b/osfmk/kern/clock.h index de8086406..8918ca3c1 100644 --- a/osfmk/kern/clock.h +++ b/osfmk/kern/clock.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2007 Apple Inc. All rights reserved. + * Copyright (c) 2000-2008 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -44,8 +44,22 @@ #include +#ifdef __LP64__ + +typedef unsigned long clock_sec_t; +typedef unsigned int clock_usec_t, clock_nsec_t; + +#else /* __LP64__ */ + +typedef uint32_t clock_sec_t; +typedef uint32_t clock_usec_t, clock_nsec_t; + +#endif /* __LP64__ */ + #ifdef MACH_KERNEL_PRIVATE +#include + /* * Clock operations list structure. Contains vectors to machine * dependent clock routines. @@ -96,46 +110,21 @@ extern void clock_timebase_init(void); */ extern void clock_service_create(void); -typedef void (*clock_timer_func_t)( - uint64_t timestamp); - -extern void clock_set_timer_func( - clock_timer_func_t func); - -extern void clock_set_timer_deadline( - uint64_t deadline); - extern void clock_gettimeofday_set_commpage( uint64_t abstime, uint64_t epoch, uint64_t offset, - uint32_t *secs, - uint32_t *microsecs); + clock_sec_t *secs, + clock_usec_t *microsecs); -extern void machine_delay_until( +extern void machine_delay_until(uint64_t interval, uint64_t deadline); -#include - -#if STAT_TIME || GPROF - -extern void hertz_tick( - natural_t ticks, - boolean_t usermode, /* executing user code */ - natural_t pc); - -#endif /* STAT_TIME */ - extern uint32_t hz_tick_interval; -extern void absolutetime_to_nanotime( - uint64_t abstime, - uint32_t *secs, - uint32_t *nanosecs); - extern void nanotime_to_absolutetime( - uint32_t secs, - uint32_t nanosecs, + clock_sec_t secs, + clock_nsec_t nanosecs, uint64_t *result); #endif /* MACH_KERNEL_PRIVATE */ @@ -145,63 +134,65 @@ __BEGIN_DECLS #ifdef XNU_KERNEL_PRIVATE extern void clock_adjtime( - int32_t *secs, - int32_t *microsecs); + long *secs, + int *microsecs); extern void clock_initialize_calendar(void); extern void clock_wakeup_calendar(void); extern void clock_gettimeofday( - uint32_t *secs, - uint32_t *microsecs); + clock_sec_t *secs, + clock_usec_t *microsecs); extern void clock_set_calendar_microtime( - uint32_t secs, - uint32_t microsecs); + clock_sec_t secs, + clock_usec_t microsecs); extern void clock_get_boottime_nanotime( - uint32_t *secs, - uint32_t *nanosecs); + clock_sec_t *secs, + clock_nsec_t *nanosecs); extern void absolutetime_to_microtime( - uint64_t abstime, - uint32_t *secs, - uint32_t *microsecs); + uint64_t abstime, + clock_sec_t *secs, + clock_usec_t *microsecs); extern void clock_deadline_for_periodic_event( uint64_t interval, uint64_t abstime, uint64_t *deadline); +#if CONFIG_DTRACE + +extern void clock_get_calendar_nanotime_nowait( + clock_sec_t *secs, + clock_nsec_t *nanosecs); + +#endif /* CONFIG_DTRACE */ + #endif /* XNU_KERNEL_PRIVATE */ extern void clock_get_calendar_microtime( - uint32_t *secs, - uint32_t *microsecs); + clock_sec_t *secs, + clock_usec_t *microsecs); -extern void clock_get_calendar_nanotime( - uint32_t *secs, - uint32_t *nanosecs); +extern void clock_get_calendar_absolute_and_microtime( + clock_sec_t *secs, + clock_usec_t *microsecs, + uint64_t *abstime); -/* - * Gah! This file is included everywhere. The other domains do not correctly - * include config_dtrace headers, so this isn't being defined. The last test - * I ran stopped with a build failure in pexpert/i386/kd.c - */ -#if CONFIG_DTRACE -extern void clock_get_calendar_nanotime_nowait( - uint32_t *secs, - uint32_t *nanosecs); -#endif /* CONFIG_DTRACE */ +extern void clock_get_calendar_nanotime( + clock_sec_t *secs, + clock_nsec_t *nanosecs); extern void clock_get_system_microtime( - uint32_t *secs, - uint32_t *microsecs); + clock_sec_t *secs, + clock_usec_t *microsecs); extern void clock_get_system_nanotime( - uint32_t *secs, - uint32_t *nanosecs); + clock_sec_t *secs, + clock_nsec_t *nanosecs); extern void clock_timebase_info( mach_timebase_info_t info); @@ -234,12 +225,17 @@ extern void nanoseconds_to_absolutetime( uint64_t nanoseconds, uint64_t *result); +extern uint64_t mach_absolutetime_asleep; +extern uint64_t mach_absolutetime_last_sleep; + #ifdef KERNEL_PRIVATE /* * Obsolete interfaces. */ +#ifndef __LP64__ + #define MACH_TIMESPEC_SEC_MAX (0 - 1) #define MACH_TIMESPEC_NSEC_MAX (NSEC_PER_SEC - 1) @@ -263,45 +259,31 @@ extern void nanoseconds_to_absolutetime( } \ } while (0) +#include -extern mach_timespec_t clock_get_system_value(void); - -extern mach_timespec_t clock_get_calendar_value(void); - -extern void delay_for_interval( - uint32_t interval, - uint32_t scale_factor); -#ifndef MACH_KERNEL_PRIVATE - -#ifndef ABSOLUTETIME_SCALAR_TYPE +/* Use mach_absolute_time() */ +extern mach_timespec_t clock_get_system_value(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_2_0, __IPHONE_6_0); -#define clock_get_uptime(a) \ - clock_get_uptime(__OSAbsoluteTimePtr(a)) +extern mach_timespec_t clock_get_calendar_value(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_2_0, __IPHONE_6_0); -#define clock_interval_to_deadline(a, b, c) \ - clock_interval_to_deadline((a), (b), __OSAbsoluteTimePtr(c)) +#else /* __LP64__ */ -#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)) +#ifdef XNU_KERNEL_PRIVATE -#define clock_delay_until(a) \ - clock_delay_until(__OSAbsoluteTime(a)) +#define MACH_TIMESPEC_ZERO ((mach_timespec_t) { 0, 0 } ) -#define absolutetime_to_nanoseconds(a, b) \ - absolutetime_to_nanoseconds(__OSAbsoluteTime(a), (b)) +#endif /* XNU_KERNEL_PRIVATE */ -#define nanoseconds_to_absolutetime(a, b) \ - nanoseconds_to_absolutetime((a), __OSAbsoluteTimePtr(b)) +#endif /* __LP64__ */ -#endif /* ABSOLUTETIME_SCALAR_TYPE */ +extern void delay_for_interval( + uint32_t interval, + uint32_t scale_factor); -#endif /* !MACH_KERNEL_PRIVATE */ +extern void delay_for_interval_with_leeway( + uint32_t interval, + uint32_t leeway, + uint32_t scale_factor); #endif /* KERNEL_PRIVATE */