X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b0d623f7f2ae71ed96e60569f61f9a9a27016e80..cc8bc92ae4a8e9f1a1ab61bf83d34ad8150b3405:/osfmk/kern/affinity.c?ds=sidebyside diff --git a/osfmk/kern/affinity.c b/osfmk/kern/affinity.c index eb5095459..bcce9af9b 100644 --- a/osfmk/kern/affinity.c +++ b/osfmk/kern/affinity.c @@ -79,9 +79,18 @@ static affinity_set_t affinity_set_remove(affinity_set_t aset, thread_t thread); * kern.affinity_sets_enabled - disables hinting if cleared * kern.affinity_sets_mapping - controls cache distribution policy * See bsd/kern_sysctl.c + * + * Affinity sets are not used on embedded, which typically only + * has a single pset, and last-processor affinity is + * more important than pset affinity. */ +#if CONFIG_EMBEDDED +boolean_t affinity_sets_enabled = FALSE; +int affinity_sets_mapping = 0; +#else /* !CONFIG_EMBEDDED */ boolean_t affinity_sets_enabled = TRUE; int affinity_sets_mapping = 1; +#endif /* !CONFIG_EMBEDDED */ boolean_t thread_affinity_is_supported(void) @@ -386,6 +395,7 @@ affinity_space_free(affinity_space_t aspc) { assert(queue_empty(&aspc->aspc_affinities)); + lck_mtx_destroy(&aspc->aspc_lock, &task_lck_grp); DBG("affinity_space_free(%p)\n", aspc); kfree(aspc, sizeof(struct affinity_space)); } @@ -528,7 +538,10 @@ affinity_set_place(affinity_space_t aspc, affinity_set_t new_aset) */ queue_iterate(&aspc->aspc_affinities, aset, affinity_set_t, aset_affinities) { - set_occupancy[aset->aset_num]++; + if(aset->aset_num < num_cpu_asets) + set_occupancy[aset->aset_num]++; + else + panic("aset_num = %d in %s\n", aset->aset_num, __FUNCTION__); } /*