1/* 2 * Copyright (c) 2000-2008 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31 32#ifndef _KERN_MACHINE_H_ 33#define _KERN_MACHINE_H_ 34 35#include <mach/kern_return.h> 36#include <mach/processor_info.h> 37#include <kern/kern_types.h> 38 39/* 40 * Machine support declarations. 41 */ 42 43extern void processor_up( 44 processor_t processor); 45 46extern void processor_offline( 47 processor_t processor); 48 49extern void processor_start_thread(void *machine_param); 50 51/* 52 * Must be implemented in machine dependent code. 53 */ 54 55/* Initialize machine dependent ast code */ 56extern void init_ast_check( 57 processor_t processor); 58 59/* Cause check for ast */ 60extern void cause_ast_check( 61 processor_t processor); 62 63extern kern_return_t cpu_control( 64 int slot_num, 65 processor_info_t info, 66 unsigned int count); 67 68extern void cpu_sleep(void); 69 70extern kern_return_t cpu_start( 71 int slot_num); 72 73extern void cpu_exit_wait( 74 int slot_num); 75 76extern kern_return_t cpu_info( 77 processor_flavor_t flavor, 78 int slot_num, 79 processor_info_t info, 80 unsigned int *count); 81 82extern kern_return_t cpu_info_count( 83 processor_flavor_t flavor, 84 unsigned int *count); 85 86extern thread_t machine_processor_shutdown( 87 thread_t thread, 88 void (*doshutdown)(processor_t), 89 processor_t processor); 90 91extern void machine_idle(void); 92 93extern void machine_signal_idle( 94 processor_t processor); 95 96extern void halt_cpu(void); 97 98extern void halt_all_cpus( 99 boolean_t reboot); 100 101extern char *machine_boot_info( 102 char *buf, 103 vm_size_t buf_len); 104 105/* 106 * Machine-dependent routine to fill in an array with up to callstack_max 107 * levels of return pc information. 108 */ 109extern void machine_callstack( 110 natural_t *buf, 111 vm_size_t callstack_max); 112 113extern void consider_machine_collect(void); 114 115#endif /* _KERN_MACHINE_H_ */ 116