+unsigned int kernel_stack_pages = KERNEL_STACK_SIZE / PAGE_SIZE;
+vm_offset_t kernel_stack_size = KERNEL_STACK_SIZE;
+vm_offset_t kernel_stack_mask = -KERNEL_STACK_SIZE;
+vm_offset_t kernel_stack_depth_max = 0;
+
+static inline void
+STACK_ZINFO_PALLOC(thread_t thread)
+{
+ task_t task;
+ zinfo_usage_t zinfo;
+
+ ledger_credit(thread->t_ledger, task_ledgers.tkm_private, kernel_stack_size);
+
+ if (stack_fake_zone_index != -1 &&
+ (task = thread->task) != NULL && (zinfo = task->tkm_zinfo) != NULL)
+ OSAddAtomic64(kernel_stack_size,
+ (int64_t *)&zinfo[stack_fake_zone_index].alloc);
+}
+
+static inline void
+STACK_ZINFO_PFREE(thread_t thread)
+{
+ task_t task;
+ zinfo_usage_t zinfo;
+
+ ledger_debit(thread->t_ledger, task_ledgers.tkm_private, kernel_stack_size);
+
+ if (stack_fake_zone_index != -1 &&
+ (task = thread->task) != NULL && (zinfo = task->tkm_zinfo) != NULL)
+ OSAddAtomic64(kernel_stack_size,
+ (int64_t *)&zinfo[stack_fake_zone_index].free);
+}
+
+static inline void
+STACK_ZINFO_HANDOFF(thread_t from, thread_t to)
+{
+ ledger_debit(from->t_ledger, task_ledgers.tkm_private, kernel_stack_size);
+ ledger_credit(to->t_ledger, task_ledgers.tkm_private, kernel_stack_size);
+
+ if (stack_fake_zone_index != -1) {
+ task_t task;
+ zinfo_usage_t zinfo;
+
+ if ((task = from->task) != NULL && (zinfo = task->tkm_zinfo) != NULL)
+ OSAddAtomic64(kernel_stack_size,
+ (int64_t *)&zinfo[stack_fake_zone_index].free);
+
+ if ((task = to->task) != NULL && (zinfo = task->tkm_zinfo) != NULL)
+ OSAddAtomic64(kernel_stack_size,
+ (int64_t *)&zinfo[stack_fake_zone_index].alloc);
+ }
+}
+