X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..743345f9a4b36f7e2f9ba37691e70c50baecb56e:/osfmk/kern/stack.c diff --git a/osfmk/kern/stack.c b/osfmk/kern/stack.c index 805830d54..0cb793286 100644 --- a/osfmk/kern/stack.c +++ b/osfmk/kern/stack.c @@ -75,37 +75,21 @@ static unsigned int stack_new_count; /* total new stack allocations */ static vm_offset_t stack_addr_mask; -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; +unsigned int kernel_stack_pages; +vm_offset_t kernel_stack_size; +vm_offset_t kernel_stack_mask; +vm_offset_t kernel_stack_depth_max; 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 @@ -113,19 +97,6 @@ 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); - } } /* @@ -158,6 +129,11 @@ stack_init(void) { simple_lock_init(&stack_lock_data, 0); + kernel_stack_pages = KERNEL_STACK_SIZE / PAGE_SIZE; + kernel_stack_size = KERNEL_STACK_SIZE; + kernel_stack_mask = -KERNEL_STACK_SIZE; + kernel_stack_depth_max = 0; + if (PE_parse_boot_argn("kernel_stack_pages", &kernel_stack_pages, sizeof (kernel_stack_pages))) { @@ -217,7 +193,8 @@ stack_alloc_internal(void) if (kernel_memory_allocate(kernel_map, &stack, kernel_stack_size + (2*PAGE_SIZE), stack_addr_mask, - KMA_KSTACK | KMA_KOBJECT | guard_flags) + KMA_KSTACK | KMA_KOBJECT | guard_flags, + VM_KERN_MEMORY_STACK) != KERN_SUCCESS) panic("stack_alloc: kernel_memory_allocate"); @@ -512,8 +489,8 @@ processor_set_stack_usage( vm_size_t maxusage; vm_offset_t maxstack; - register thread_t *thread_list; - register thread_t thread; + thread_t *thread_list; + thread_t thread; unsigned int actual; /* this many things */ unsigned int i;