+ uint32_t loadTag; /* dext ID used for logging identity */
+#if CONFIG_FREEZE
+ queue_head_t task_frozen_cseg_q; /* queue of csegs frozen to NAND */
+#endif /* CONFIG_FREEZE */
+#if CONFIG_PHYS_WRITE_ACCT
+ uint64_t task_fs_metadata_writes;
+#endif /* CONFIG_PHYS_WRITE_ACCT */
+ uint32_t task_shared_region_slide; /* cached here to avoid locking during telemetry */
+ uuid_t task_shared_region_uuid;
+};
+
+/*
+ * EXC_GUARD default delivery behavior for optional Mach port and VM guards.
+ * Applied to new tasks at creation time.
+ */
+extern task_exc_guard_behavior_t task_exc_guard_default;
+
+extern kern_return_t
+ task_violated_guard(mach_exception_code_t, mach_exception_subcode_t, void *);
+
+static inline void
+task_require(struct task *task)
+{
+ zone_id_require(ZONE_ID_TASK, sizeof(struct task), task);
+}
+
+#define task_lock(task) lck_mtx_lock(&(task)->lock)
+#define task_lock_assert_owned(task) LCK_MTX_ASSERT(&(task)->lock, LCK_MTX_ASSERT_OWNED)
+#define task_lock_try(task) lck_mtx_try_lock(&(task)->lock)
+#define task_unlock(task) lck_mtx_unlock(&(task)->lock)
+
+#define task_objq_lock_init(task) lck_mtx_init(&(task)->task_objq_lock, &vm_object_lck_grp, &vm_object_lck_attr)
+#define task_objq_lock_destroy(task) lck_mtx_destroy(&(task)->task_objq_lock, &vm_object_lck_grp)
+#define task_objq_lock(task) lck_mtx_lock(&(task)->task_objq_lock)
+#define task_objq_lock_assert_owned(task) LCK_MTX_ASSERT(&(task)->task_objq_lock, LCK_MTX_ASSERT_OWNED)
+#define task_objq_lock_try(task) lck_mtx_try_lock(&(task)->task_objq_lock)
+#define task_objq_unlock(task) lck_mtx_unlock(&(task)->task_objq_lock)
+
+#define itk_lock_init(task) lck_mtx_init(&(task)->itk_lock_data, &ipc_lck_grp, &ipc_lck_attr)
+#define itk_lock_destroy(task) lck_mtx_destroy(&(task)->itk_lock_data, &ipc_lck_grp)
+#define itk_lock(task) lck_mtx_lock(&(task)->itk_lock_data)
+#define itk_unlock(task) lck_mtx_unlock(&(task)->itk_lock_data)
+
+/* task clear return wait flags */
+#define TCRW_CLEAR_INITIAL_WAIT 0x1
+#define TCRW_CLEAR_FINAL_WAIT 0x2
+#define TCRW_CLEAR_ALL_WAIT (TCRW_CLEAR_INITIAL_WAIT | TCRW_CLEAR_FINAL_WAIT)