X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/ff6e181ae92fc6f1e89841290f461d1f2f9badd9..813fb2f63a553c957e917ede5f119b021d6ce391:/osfmk/kern/machine.h diff --git a/osfmk/kern/machine.h b/osfmk/kern/machine.h index 0028d7ba8..37d69bf88 100644 --- a/osfmk/kern/machine.h +++ b/osfmk/kern/machine.h @@ -1,14 +1,19 @@ /* - * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2008 Apple Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ + * @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 - * 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. + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * 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 @@ -18,7 +23,7 @@ * Please see the License for the specific language governing rights and * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* * @OSF_COPYRIGHT@ @@ -41,7 +46,7 @@ extern void processor_up( extern void processor_offline( processor_t processor); -extern void processor_start_thread(void); +extern void processor_start_thread(void *machine_param); /* * Must be implemented in machine dependent code. @@ -85,9 +90,20 @@ extern thread_t machine_processor_shutdown( extern void machine_idle(void); +extern void machine_track_platform_idle(boolean_t); + +/* Signals a processor to bring it out of idle */ extern void machine_signal_idle( processor_t processor); +/* Signals a processor to bring it out of idle unless canceled */ +extern void machine_signal_idle_deferred( + processor_t processor); + +/* Cancels an outstanding machine_signal_idle_deferred, if this is supported */ +extern void machine_signal_idle_cancel( + processor_t processor); + extern void halt_cpu(void); extern void halt_all_cpus( @@ -102,9 +118,34 @@ extern char *machine_boot_info( * levels of return pc information. */ extern void machine_callstack( - natural_t *buf, + uintptr_t *buf, vm_size_t callstack_max); extern void consider_machine_collect(void); +/* + * Machine-dependent routine to inform platform layer and external + * CPU power management about context switches + */ + +extern void machine_thread_going_on_core(thread_t new_thread, + int urgency, + uint64_t sched_latency, + uint64_t dispatch_time); + +extern void machine_thread_going_off_core(thread_t old_thread, boolean_t thread_terminating, uint64_t last_dispatch); + +extern void machine_max_runnable_latency(uint64_t bg_max_latency, + uint64_t default_max_latency, + uint64_t realtime_max_latency); + +extern void machine_work_interval_notify(thread_t thread, + uint64_t work_id, + uint64_t start_abstime, + uint64_t finish_abstime, + uint64_t deadline_abstime, + uint64_t next_start_abstime, + uint16_t urgency, + uint32_t flags); + #endif /* _KERN_MACHINE_H_ */