Lines Matching refs:aspc

69 static void affinity_space_free(affinity_space_t aspc);
72 static affinity_set_t affinity_set_find(affinity_space_t aspc, uint32_t tag);
73 static void affinity_set_place(affinity_space_t aspc, affinity_set_t aset);
133 affinity_space_t aspc; in thread_affinity_set() local
139 aspc = task->affinity_space; in thread_affinity_set()
140 if (aspc == NULL) { in thread_affinity_set()
151 aspc = task->affinity_space; in thread_affinity_set()
165 lck_mtx_lock(&aspc->aspc_lock); in thread_affinity_set()
177 aset = affinity_set_find(aspc, tag); in thread_affinity_set()
195 lck_mtx_unlock(&aspc->aspc_lock); in thread_affinity_set()
203 affinity_set_place(aspc, aset); in thread_affinity_set()
208 lck_mtx_unlock(&aspc->aspc_lock); in thread_affinity_set()
233 affinity_space_t aspc = parent_task->affinity_space; in task_affinity_create() local
237 assert(aspc); in task_affinity_create()
243 lck_mtx_lock(&aspc->aspc_lock); in task_affinity_create()
244 aspc->aspc_task_count++; in task_affinity_create()
245 child_task->affinity_space = aspc; in task_affinity_create()
246 lck_mtx_unlock(&aspc->aspc_lock); in task_affinity_create()
256 affinity_space_t aspc = task->affinity_space; in task_affinity_deallocate() local
259 task, aspc, aspc->aspc_task_count); in task_affinity_deallocate()
261 lck_mtx_lock(&aspc->aspc_lock); in task_affinity_deallocate()
262 if (--(aspc->aspc_task_count) == 0) { in task_affinity_deallocate()
263 assert(queue_empty(&aspc->aspc_affinities)); in task_affinity_deallocate()
264 lck_mtx_unlock(&aspc->aspc_lock); in task_affinity_deallocate()
265 affinity_space_free(aspc); in task_affinity_deallocate()
267 lck_mtx_unlock(&aspc->aspc_lock); in task_affinity_deallocate()
284 affinity_space_t aspc; in task_affinity_info() local
294 aspc = task->affinity_space; in task_affinity_info()
295 if (aspc) { in task_affinity_info()
296 lck_mtx_lock(&aspc->aspc_lock); in task_affinity_info()
297 queue_iterate(&aspc->aspc_affinities, in task_affinity_info()
309 info->task_count = aspc->aspc_task_count; in task_affinity_info()
310 lck_mtx_unlock(&aspc->aspc_lock); in task_affinity_info()
324 affinity_space_t aspc; in thread_affinity_dup() local
334 aspc = aset->aset_space; in thread_affinity_dup()
335 assert(aspc == get_threadtask(parent)->affinity_space); in thread_affinity_dup()
336 assert(aspc == get_threadtask(child)->affinity_space); in thread_affinity_dup()
338 lck_mtx_lock(&aspc->aspc_lock); in thread_affinity_dup()
340 lck_mtx_unlock(&aspc->aspc_lock); in thread_affinity_dup()
354 affinity_space_t aspc; in thread_affinity_terminate() local
358 aspc = aset->aset_space; in thread_affinity_terminate()
359 lck_mtx_lock(&aspc->aspc_lock); in thread_affinity_terminate()
363 lck_mtx_unlock(&aspc->aspc_lock); in thread_affinity_terminate()
385 affinity_space_t aspc; in affinity_space_alloc() local
387 aspc = kalloc_type(struct affinity_space, Z_WAITOK | Z_NOFAIL); in affinity_space_alloc()
389 lck_mtx_init(&aspc->aspc_lock, &task_lck_grp, &task_lck_attr); in affinity_space_alloc()
390 queue_init(&aspc->aspc_affinities); in affinity_space_alloc()
391 aspc->aspc_task_count = 1; in affinity_space_alloc()
393 DBG("affinity_space_create() returns %p\n", aspc); in affinity_space_alloc()
394 return aspc; in affinity_space_alloc()
401 affinity_space_free(affinity_space_t aspc) in affinity_space_free() argument
403 assert(queue_empty(&aspc->aspc_affinities)); in affinity_space_free()
405 lck_mtx_destroy(&aspc->aspc_lock, &task_lck_grp); in affinity_space_free()
406 DBG("affinity_space_free(%p)\n", aspc); in affinity_space_free()
407 kfree_type(struct affinity_space, aspc); in affinity_space_free()
529 affinity_set_place(affinity_space_t aspc, affinity_set_t new_aset) in affinity_set_place() argument
545 queue_iterate(&aspc->aspc_affinities, in affinity_set_place()
564 i_least_occupied = (unsigned int)(((uintptr_t)aspc % 127) % num_cpu_asets); in affinity_set_place()
580 new_aset->aset_space = aspc; in affinity_set_place()
581 queue_enter(&aspc->aspc_affinities, in affinity_set_place()
585 aspc, new_aset, new_aset->aset_num, new_aset->aset_pset); in affinity_set_place()