X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/5ba3f43ea354af8ad55bea84372a2bc834d8757c..c6bf4f310a33a9262d455ea4d3f0630b1255e3fe:/osfmk/kern/timer_call.h diff --git a/osfmk/kern/timer_call.h b/osfmk/kern/timer_call.h index 6581d90c2..a817ce088 100644 --- a/osfmk/kern/timer_call.h +++ b/osfmk/kern/timer_call.h @@ -2,7 +2,7 @@ * Copyright (c) 1993-1995, 1999-2008 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * 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 @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * 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, @@ -22,7 +22,7 @@ * 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_OSREFERENCE_LICENSE_HEADER_END@ */ /* @@ -42,6 +42,7 @@ #ifdef MACH_KERNEL_PRIVATE #include +#include extern boolean_t mach_timer_coalescing_enabled; extern void timer_call_queue_init(mpqueue_head_t *); @@ -52,21 +53,21 @@ extern void timer_call_queue_init(mpqueue_head_t *); * of this data structure, and the two had better match. */ typedef struct timer_call { - struct call_entry call_entry; - decl_simple_lock_data( ,lock); /* protects call_entry queue */ - uint64_t soft_deadline; - uint32_t flags; - boolean_t async_dequeue; /* this field is protected by - call_entry queue's lock */ - uint64_t ttd; /* Time to deadline at creation */ + struct call_entry call_entry; + decl_simple_lock_data(, lock); /* protects call_entry queue */ + uint64_t soft_deadline; + uint32_t flags; + boolean_t async_dequeue; /* this field is protected by + * call_entry queue's lock */ + uint64_t ttd; /* Time to deadline at creation */ } timer_call_data_t, *timer_call_t; -#define EndOfAllTime 0xFFFFFFFFFFFFFFFFULL +#define EndOfAllTime 0xFFFFFFFFFFFFFFFFULL -typedef void *timer_call_param_t; -typedef void (*timer_call_func_t)( - timer_call_param_t param0, - timer_call_param_t param1); +typedef void *timer_call_param_t; +typedef void (*timer_call_func_t)( + timer_call_param_t param0, + timer_call_param_t param1); /* * Flags to alter the default timer/timeout coalescing behavior @@ -81,16 +82,16 @@ typedef void (*timer_call_func_t)( * attributes, in addition to the per-timer_call urgency specification, * are used to establish coalescing behavior. */ -#define TIMER_CALL_SYS_NORMAL TIMEOUT_URGENCY_SYS_NORMAL -#define TIMER_CALL_SYS_CRITICAL TIMEOUT_URGENCY_SYS_CRITICAL -#define TIMER_CALL_SYS_BACKGROUND TIMEOUT_URGENCY_SYS_BACKGROUND +#define TIMER_CALL_SYS_NORMAL TIMEOUT_URGENCY_SYS_NORMAL +#define TIMER_CALL_SYS_CRITICAL TIMEOUT_URGENCY_SYS_CRITICAL +#define TIMER_CALL_SYS_BACKGROUND TIMEOUT_URGENCY_SYS_BACKGROUND -#define TIMER_CALL_USER_MASK TIMEOUT_URGENCY_USER_MASK -#define TIMER_CALL_USER_NORMAL TIMEOUT_URGENCY_USER_NORMAL -#define TIMER_CALL_USER_CRITICAL TIMEOUT_URGENCY_USER_CRITICAL -#define TIMER_CALL_USER_BACKGROUND TIMEOUT_URGENCY_USER_BACKGROUND +#define TIMER_CALL_USER_MASK TIMEOUT_URGENCY_USER_MASK +#define TIMER_CALL_USER_NORMAL TIMEOUT_URGENCY_USER_NORMAL +#define TIMER_CALL_USER_CRITICAL TIMEOUT_URGENCY_USER_CRITICAL +#define TIMER_CALL_USER_BACKGROUND TIMEOUT_URGENCY_USER_BACKGROUND -#define TIMER_CALL_URGENCY_MASK TIMEOUT_URGENCY_MASK +#define TIMER_CALL_URGENCY_MASK TIMEOUT_URGENCY_MASK /* * Indicate that a specific leeway value is being provided (otherwise @@ -98,50 +99,50 @@ typedef void (*timer_call_func_t)( * only be used to extend the leeway calculated internally from the * urgency class provided. */ -#define TIMER_CALL_LEEWAY TIMEOUT_URGENCY_LEEWAY +#define TIMER_CALL_LEEWAY TIMEOUT_URGENCY_LEEWAY /* * Non-migratable timer_call */ -#define TIMER_CALL_LOCAL TIMEOUT_URGENCY_FIRST_AVAIL -#define TIMER_CALL_RATELIMITED TIMEOUT_URGENCY_RATELIMITED -extern boolean_t timer_call_enter( - timer_call_t call, - uint64_t deadline, - uint32_t flags); - -extern boolean_t timer_call_enter1( - timer_call_t call, - timer_call_param_t param1, - uint64_t deadline, - uint32_t flags); - -extern boolean_t timer_call_enter_with_leeway( - timer_call_t call, - timer_call_param_t param1, - uint64_t deadline, - uint64_t leeway, - uint32_t flags, - boolean_t ratelimited); - -extern boolean_t timer_call_quantum_timer_enter( - timer_call_t call, - timer_call_param_t param1, - uint64_t deadline, - uint64_t ctime); - -extern boolean_t timer_call_cancel( - timer_call_t call); - -extern boolean_t timer_call_quantum_timer_cancel( - timer_call_t call); - -extern void timer_call_init(void); - -extern void timer_call_setup( - timer_call_t call, - timer_call_func_t func, - timer_call_param_t param0); +#define TIMER_CALL_LOCAL TIMEOUT_URGENCY_FIRST_AVAIL +#define TIMER_CALL_RATELIMITED TIMEOUT_URGENCY_RATELIMITED +extern boolean_t timer_call_enter( + timer_call_t call, + uint64_t deadline, + uint32_t flags); + +extern boolean_t timer_call_enter1( + timer_call_t call, + timer_call_param_t param1, + uint64_t deadline, + uint32_t flags); + +extern boolean_t timer_call_enter_with_leeway( + timer_call_t call, + timer_call_param_t param1, + uint64_t deadline, + uint64_t leeway, + uint32_t flags, + boolean_t ratelimited); + +extern boolean_t timer_call_quantum_timer_enter( + timer_call_t call, + timer_call_param_t param1, + uint64_t deadline, + uint64_t ctime); + +extern boolean_t timer_call_cancel( + timer_call_t call); + +extern boolean_t timer_call_quantum_timer_cancel( + timer_call_t call); + +extern void timer_call_init(void); + +extern void timer_call_setup( + timer_call_t call, + timer_call_func_t func, + timer_call_param_t param0); extern int timer_get_user_idle_level(void); extern kern_return_t timer_set_user_idle_level(int ilevel);