-/* Begin task_policy */
-
-/* value */
-#define TASK_POLICY_DISABLE 0x0
-#define TASK_POLICY_ENABLE 0x1
-
-/* category */
-#define TASK_POLICY_INTERNAL 0x0
-#define TASK_POLICY_EXTERNAL 0x1
-#define TASK_POLICY_ATTRIBUTE 0x2
-
-/* for tracing */
-#define TASK_POLICY_TASK 0x4
-#define TASK_POLICY_THREAD 0x8
-
-/* flavors (also DBG_IMPORTANCE subclasses 0x20 - 0x3F) */
-
-/* internal or external, thread or task */
-#define TASK_POLICY_DARWIN_BG 0x21
-#define TASK_POLICY_IOPOL 0x22
-#define TASK_POLICY_IO 0x23
-#define TASK_POLICY_PASSIVE_IO 0x24
-
-/* internal, task only */
-#define TASK_POLICY_DARWIN_BG_IOPOL 0x27
-
-/* task-only attributes */
-#define TASK_POLICY_TAL 0x28
-#define TASK_POLICY_BOOST 0x29
-#define TASK_POLICY_ROLE 0x2A
-#define TASK_POLICY_SUPPRESSED_CPU 0x2B
-#define TASK_POLICY_TERMINATED 0x2C
-#define TASK_POLICY_NEW_SOCKETS_BG 0x2D
-#define TASK_POLICY_LOWPRI_CPU 0x2E
-#define TASK_POLICY_LATENCY_QOS 0x2F
-#define TASK_POLICY_THROUGH_QOS 0x30
-#define TASK_POLICY_WATCHERS_BG 0x31
-
-#define TASK_POLICY_SFI_MANAGED 0x34
-#define TASK_POLICY_ALL_SOCKETS_BG 0x37
-
-#define TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS 0x39 /* latency as value1, throughput as value2 */
-#define TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS 0x3A /* latency as value1, throughput as value2 */
-
-/* thread-only attributes */
-#define TASK_POLICY_PIDBIND_BG 0x32
-#define TASK_POLICY_WORKQ_BG 0x33
-#define TASK_POLICY_QOS 0x35
-#define TASK_POLICY_QOS_OVERRIDE 0x36
-#define TASK_POLICY_QOS_AND_RELPRIO 0x38 /* QoS as value1, relative priority as value2 */
-
-#define TASK_POLICY_MAX 0x3F
-
-/* The main entrance to task policy is this function */
-extern void proc_set_task_policy(task_t task, thread_t thread, int category, int flavor, int value);
-extern int proc_get_task_policy(task_t task, thread_t thread, int category, int flavor);
-
-/* For attributes that have two scalars as input/output */
-extern void proc_set_task_policy2(task_t task, thread_t thread, int category, int flavor, int value1, int value2);
-extern void proc_get_task_policy2(task_t task, thread_t thread, int category, int flavor, int *value1, int *value2);
-
-/* For use by kernel threads and others who don't hold a reference on the target thread */
-extern void proc_set_task_policy_thread(task_t task, uint64_t tid, int category, int flavor, int value);
-
-extern void proc_set_task_spawnpolicy(task_t task, int apptype, int qos_clamp,
- ipc_port_t * portwatch_ports, int portwatch_count);
-
-extern void task_set_main_thread_qos(task_t task, thread_t main_thread);
-
-/* IO Throttle tiers */
-#define THROTTLE_LEVEL_NONE -1
-#define THROTTLE_LEVEL_TIER0 0 /* IOPOL_NORMAL, IOPOL_DEFAULT, IOPOL_PASSIVE */
-
-#define THROTTLE_LEVEL_THROTTLED 1
-#define THROTTLE_LEVEL_TIER1 1 /* IOPOL_STANDARD */
-#define THROTTLE_LEVEL_TIER2 2 /* IOPOL_UTILITY */
-#define THROTTLE_LEVEL_TIER3 3 /* IOPOL_THROTTLE */
-
-#define THROTTLE_LEVEL_START 0
-#define THROTTLE_LEVEL_END 3
-
-#define THROTTLE_LEVEL_COMPRESSOR_TIER0 THROTTLE_LEVEL_TIER0
-#define THROTTLE_LEVEL_COMPRESSOR_TIER1 THROTTLE_LEVEL_TIER1
-#define THROTTLE_LEVEL_COMPRESSOR_TIER2 THROTTLE_LEVEL_TIER2
-
-#define THROTTLE_LEVEL_PAGEOUT_THROTTLED THROTTLE_LEVEL_TIER2
-#define THROTTLE_LEVEL_PAGEOUT_UNTHROTTLED THROTTLE_LEVEL_TIER1
-
-#if CONFIG_IOSCHED
-#define IOSCHED_METADATA_TIER THROTTLE_LEVEL_TIER1
-#endif /* CONFIG_IOSCHED */
-
-extern int proc_apply_workq_bgthreadpolicy(thread_t thread);
-extern int proc_restore_workq_bgthreadpolicy(thread_t thread);
-
-extern int proc_get_darwinbgstate(task_t task, uint32_t *flagsp);
-extern boolean_t proc_task_is_tal(task_t task);
-extern integer_t task_grab_latency_qos(task_t task);
-extern void task_policy_create(task_t task, int parent_boosted);
-extern void thread_policy_create(thread_t thread);
-
-/*
- * for IPC importance hooks into task policy
- */
-typedef struct task_pend_token {
- uint32_t tpt_update_sockets :1,
- tpt_update_timers :1,
- tpt_update_watchers :1,
- tpt_update_live_donor :1;
-} *task_pend_token_t;
-
-extern void task_policy_update_complete_unlocked(task_t task, thread_t thread, task_pend_token_t pend_token);
-extern void task_update_boost_locked(task_t task, boolean_t boost_active, task_pend_token_t pend_token);
-extern void task_set_boost_locked(task_t task, boolean_t boost_active);
-
-/*
- * Get effective policy
- * Only for use by relevant subsystem, should never be passed into a setter!
- */
-
-extern int proc_get_effective_task_policy(task_t task, int flavor);
-extern int proc_get_effective_thread_policy(thread_t thread, int flavor);
-
-/* temporary compatibility */
-int proc_setthread_saved_importance(thread_t thread, int importance);
-
-int proc_get_task_ruse_cpu(task_t task, uint32_t *policyp, uint8_t *percentagep, uint64_t *intervalp, uint64_t *deadlinep);
-int proc_set_task_ruse_cpu(task_t task, uint32_t policy, uint8_t percentage, uint64_t interval, uint64_t deadline, int cpumon_entitled);
-int proc_clear_task_ruse_cpu(task_t task, int cpumon_entitled);
-thread_t task_findtid(task_t, uint64_t);
-void set_thread_iotier_override(thread_t, int policy);
-
-boolean_t proc_thread_qos_add_override(task_t task, thread_t thread, uint64_t tid, int override_qos, boolean_t first_override_for_resource);
-boolean_t proc_thread_qos_remove_override(task_t task, thread_t thread, uint64_t tid);
-
-#define TASK_RUSECPU_FLAGS_PROC_LIMIT 0x01
-#define TASK_RUSECPU_FLAGS_PERTHR_LIMIT 0x02
-#define TASK_RUSECPU_FLAGS_DEADLINE 0x04
-#define TASK_RUSECPU_FLAGS_FATAL_CPUMON 0x08 /* CPU usage monitor violations are fatal */
-#define TASK_RUSECPU_FLAGS_FATAL_WAKEUPSMON 0x10 /* wakeups monitor violations are fatal */
-#define TASK_RUSECPU_FLAGS_PHYS_FOOTPRINT_EXCEPTION 0x20 /* exceeding physical footprint generates EXC_RESOURCE */
-
-/* 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 int task_clear_cpuusage(task_t task, int cpumon_entitled);