- task_t task,
- int flavor,
- thread_state_t state,
- mach_msg_type_number_t state_count);
-
-
-int proc_get_task_bg_policy(task_t task);
-int proc_get_thread_bg_policy(task_t task, uint64_t tid);
-int proc_get_self_isbackground(void);
-int proc_get_selfthread_isbackground(void);
-
-int proc_get_darwinbgstate(task_t, uint32_t *);
-int proc_set_bgtaskpolicy(task_t task, int intval);
-int proc_set1_bgtaskpolicy(task_t task, int intval);
-int proc_set_bgthreadpolicy(task_t task, uint64_t tid, int val);
-int proc_set1_bgthreadpolicy(task_t task, uint64_t tid, int val);
-
-int proc_add_bgtaskpolicy(task_t task, int val);
-int proc_add_bgthreadpolicy(task_t task, uint64_t tid, int val);
-int proc_remove_bgtaskpolicy(task_t task, int policy);
-int proc_remove_bgthreadpolicy(task_t task, uint64_t tid, int val);
-
-int proc_apply_bgtaskpolicy(task_t task);
-int proc_apply_bgtaskpolicy_external(task_t task);
-int proc_apply_bgtaskpolicy_internal(task_t task);
-int proc_apply_bgthreadpolicy(task_t task, uint64_t tid);
-int proc_apply_bgtask_selfpolicy(void);
-int proc_apply_bgthread_selfpolicy(void);
-int proc_apply_workq_bgthreadpolicy(thread_t);
-
-int proc_restore_bgtaskpolicy(task_t task);
-int proc_restore_bgthreadpolicy(task_t task, uint64_t tid);
-int proc_restore_bgthread_selfpolicy(void);
-int proc_restore_workq_bgthreadpolicy(thread_t);
-
-/* hw access routines */
-int proc_apply_task_diskacc(task_t task, int policy);
-int proc_apply_thread_diskacc(task_t task, uint64_t tid, int policy);
-int proc_apply_thread_selfdiskacc(int policy);
-int proc_get_task_disacc(task_t task);
-int proc_get_task_selfdiskacc(void);
-int proc_get_thread_selfdiskacc(void);
-int proc_denyinherit_policy(task_t task);
-int proc_denyselfset_policy(task_t task);
-
-int proc_get_task_selfgpuacc_deny(void);
-int proc_apply_task_gpuacc(task_t task, int prio);
-
-int proc_get_task_ruse_cpu(task_t task, uint32_t * policyp, uint32_t * percentagep, uint64_t * intervalp, uint64_t * deadlinep);
-int proc_set_task_ruse_cpu(task_t task, uint32_t policy, uint32_t percentage, uint64_t interval, uint64_t deadline);
-thread_t task_findtid(task_t, uint64_t);
-
-#define PROC_POLICY_OSX_APPTYPE_NONE 0
-#define PROC_POLICY_OSX_APPTYPE_TAL 1
-#define PROC_POLICY_OSX_APPTYPE_WIDGET 2
-#define PROC_POLICY_OSX_APPTYPE_DBCLIENT 2 /* Not a bug, just rename of widget */
-#define PROC_POLICY_IOS_APPTYPE 3
-#define PROC_POLICY_IOS_NONUITYPE 4
-
-void proc_set_task_apptype(task_t, int);
-int proc_disable_task_apptype(task_t task, int policy_subtype);
-int proc_enable_task_apptype(task_t task, int policy_subtype);
-
-/* resource handle callback */
-int task_action_cpuusage(task_t);
-
-/* BSD call back functions */
-extern int proc_apply_resource_actions(void * p, int type, int action);
-extern int proc_restore_resource_actions(void * p, int type, int action);
-extern int task_restore_resource_actions(task_t task, int type);
-
-extern void proc_apply_task_networkbg(void * bsd_info);
-extern void proc_restore_task_networkbg(void * bsd_info);
-extern void proc_set_task_networkbg(void * bsd_info, int setbg);
-#endif /* XNU_KERNEL_PRIVATE */
-
-#ifdef KERNEL_PRIVATE
-
-extern void *get_bsdtask_info(task_t);
-extern void *get_bsdthreadtask_info(thread_t);
+ task_t task,
+ int flavor,
+ thread_state_t state,
+ mach_msg_type_number_t state_count);
+
+extern void machine_task_terminate(task_t task);
+
+struct _task_ledger_indices {
+ int cpu_time;
+ int tkm_private;
+ int tkm_shared;
+ int phys_mem;
+ int wired_mem;
+ int internal;
+ int iokit_mapped;
+ int alternate_accounting;
+ int alternate_accounting_compressed;
+ int page_table;
+ int phys_footprint;
+ int internal_compressed;
+ int purgeable_volatile;
+ int purgeable_nonvolatile;
+ int purgeable_volatile_compressed;
+ int purgeable_nonvolatile_compressed;
+ int tagged_nofootprint;
+ int tagged_footprint;
+ int tagged_nofootprint_compressed;
+ int tagged_footprint_compressed;
+ int network_volatile;
+ int network_nonvolatile;
+ int network_volatile_compressed;
+ int network_nonvolatile_compressed;
+ int media_nofootprint;
+ int media_footprint;
+ int media_nofootprint_compressed;
+ int media_footprint_compressed;
+ int graphics_nofootprint;
+ int graphics_footprint;
+ int graphics_nofootprint_compressed;
+ int graphics_footprint_compressed;
+ int neural_nofootprint;
+ int neural_footprint;
+ int neural_nofootprint_compressed;
+ int neural_footprint_compressed;
+ int platform_idle_wakeups;
+ int interrupt_wakeups;
+#if CONFIG_SCHED_SFI
+ int sfi_wait_times[MAX_SFI_CLASS_ID];
+#endif /* CONFIG_SCHED_SFI */
+ int cpu_time_billed_to_me;
+ int cpu_time_billed_to_others;
+ int physical_writes;
+ int logical_writes;
+ int logical_writes_to_external;
+ int energy_billed_to_me;
+ int energy_billed_to_others;
+#if DEBUG || DEVELOPMENT
+ int pages_grabbed;
+ int pages_grabbed_kern;
+ int pages_grabbed_iopl;
+ int pages_grabbed_upl;
+#endif
+};
+extern struct _task_ledger_indices task_ledgers;
+
+/* requires task to be unlocked, returns a referenced thread */
+thread_t task_findtid(task_t task, uint64_t tid);
+int pid_from_task(task_t task);
+
+extern kern_return_t task_wakeups_monitor_ctl(task_t task, uint32_t *rate_hz, int32_t *flags);
+extern kern_return_t task_cpu_usage_monitor_ctl(task_t task, uint32_t *flags);
+extern void task_rollup_accounting_info(task_t new_task, task_t parent_task);
+extern kern_return_t task_io_monitor_ctl(task_t task, uint32_t *flags);
+extern void task_set_did_exec_flag(task_t task);
+extern void task_clear_exec_copy_flag(task_t task);
+extern boolean_t task_is_exec_copy(task_t);
+extern boolean_t task_did_exec(task_t task);
+#ifdef CONFIG_32BIT_TELEMETRY
+extern boolean_t task_consume_32bit_log_flag(task_t task);
+extern void task_set_32bit_log_flag(task_t task);
+#endif /* CONFIG_32BIT_TELEMETRY */
+extern boolean_t task_is_active(task_t task);
+extern boolean_t task_is_halting(task_t task);
+extern void task_clear_return_wait(task_t task, uint32_t flags);
+extern void task_wait_to_return(void) __attribute__((noreturn));
+extern event_t task_get_return_wait_event(task_t task);
+
+extern void task_atm_reset(task_t task);
+extern void task_bank_reset(task_t task);
+extern void task_bank_init(task_t task);
+
+#if CONFIG_ARCADE
+extern void task_prep_arcade(task_t task, thread_t thread);
+#endif /* CONFIG_ARCADE */
+
+extern int task_pid(task_t task);
+extern boolean_t task_has_assertions(task_t task);
+/* End task_policy */
+
+extern void task_set_gpu_denied(task_t task, boolean_t denied);
+extern boolean_t task_is_gpu_denied(task_t task);
+
+extern queue_head_t * task_io_user_clients(task_t task);
+extern void task_set_message_app_suspended(task_t task, boolean_t enable);
+
+extern void task_copy_fields_for_exec(task_t dst_task, task_t src_task);
+
+extern void task_copy_vmobjects(task_t task, vm_object_query_t query, int len, int64_t* num);
+
+#endif /* XNU_KERNEL_PRIVATE */
+
+#ifdef KERNEL_PRIVATE
+
+extern void *get_bsdtask_info(task_t);
+extern void *get_bsdthreadtask_info(thread_t);
+extern void task_bsdtask_kill(task_t);