#ifndef _KERN_MACHINE_H_
#define _KERN_MACHINE_H_
#include <mach/kern_return.h>
#include <mach/processor_info.h>
#include <kern/kern_types.h>
extern void processor_up(
processor_t processor);
extern void processor_offline(
processor_t processor);
extern void processor_start_thread(void *machine_param);
extern void init_ast_check(
processor_t processor);
extern void cause_ast_check(
processor_t processor);
extern kern_return_t cpu_control(
int slot_num,
processor_info_t info,
unsigned int count);
extern void cpu_sleep(void);
extern kern_return_t cpu_start(
int slot_num);
extern void cpu_exit_wait(
int slot_num);
extern kern_return_t cpu_info(
processor_flavor_t flavor,
int slot_num,
processor_info_t info,
unsigned int *count);
extern kern_return_t cpu_info_count(
processor_flavor_t flavor,
unsigned int *count);
extern thread_t machine_processor_shutdown(
thread_t thread,
void (*doshutdown)(processor_t),
processor_t processor);
extern void machine_idle(void);
extern void machine_track_platform_idle(boolean_t);
extern void machine_signal_idle(
processor_t processor);
extern void machine_signal_idle_deferred(
processor_t processor);
extern void machine_signal_idle_cancel(
processor_t processor);
extern void halt_cpu(void);
extern void halt_all_cpus(
boolean_t reboot);
extern char *machine_boot_info(
char *buf,
vm_size_t buf_len);
extern void machine_callstack(
uintptr_t *buf,
vm_size_t callstack_max);
extern void consider_machine_collect(void);
extern void machine_thread_going_on_core(thread_t new_thread,
int urgency,
uint64_t sched_latency);
extern void machine_thread_going_off_core(thread_t old_thread, boolean_t thread_terminating);
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