Lines Matching refs:tk

342 	task_t *tk;  in task_find()  local
347 (mod_hash_val_t *)&tk) == MH_ERR_NOTFOUND || in task_find()
348 (zoneid != ALL_ZONES && zoneid != tk->tk_zone->zone_id)) in task_find()
351 return (tk); in task_find()
373 task_t *tk; in task_hold_by_id_zone() local
376 if ((tk = task_find(id, zoneid)) != NULL) in task_hold_by_id_zone()
377 atomic_inc_32(&tk->tk_hold_count); in task_hold_by_id_zone()
380 return (tk); in task_hold_by_id_zone()
408 task_hold(task_t *tk) in task_hold() argument
410 atomic_inc_32(&tk->tk_hold_count); in task_hold()
429 task_rele(task_t *tk) in task_rele() argument
432 if (atomic_add_32_nv(&tk->tk_hold_count, -1) > 0) { in task_rele()
437 ASSERT(tk->tk_nprocs == 0); in task_rele()
439 mutex_enter(&tk->tk_zone->zone_nlwps_lock); in task_rele()
440 tk->tk_proj->kpj_ntasks--; in task_rele()
441 mutex_exit(&tk->tk_zone->zone_nlwps_lock); in task_rele()
443 task_kstat_delete(tk); in task_rele()
446 (mod_hash_key_t)(uintptr_t)tk->tk_tkid) != 0) in task_rele()
447 panic("unable to delete task %d", tk->tk_tkid); in task_rele()
458 if (taskq_dispatch(exacct_queue, exacct_commit_task, tk, in task_rele()
462 task_commit_head = task_commit_tail = tk; in task_rele()
464 task_commit_tail->tk_commit_next = tk; in task_rele()
465 task_commit_tail = tk; in task_rele()
491 task_t *tk = kmem_cache_alloc(task_cache, KM_SLEEP); in task_create() local
500 bzero(tk, sizeof (task_t)); in task_create()
502 tk->tk_tkid = tkid = id_alloc(taskid_space); in task_create()
503 tk->tk_nlwps = 0; in task_create()
504 tk->tk_nlwps_ctl = INT_MAX; in task_create()
505 tk->tk_nprocs = 0; in task_create()
506 tk->tk_nprocs_ctl = INT_MAX; in task_create()
507 tk->tk_usage = tu; in task_create()
508 tk->tk_inherited = kmem_zalloc(sizeof (task_usage_t), KM_SLEEP); in task_create()
509 tk->tk_proj = project_hold_by_id(projid, zone, PROJECT_HOLD_INSERT); in task_create()
510 tk->tk_flags = TASK_NORMAL; in task_create()
511 tk->tk_commit_next = NULL; in task_create()
520 tk->tk_zone = zone; in task_create()
540 e.rcep_p.task = tk; in task_create()
542 tk->tk_rctls = rctl_set_dup(ancestor_tk->tk_rctls, curproc, curproc, &e, in task_create()
561 (mod_hash_val_t *)tk, hndl) != 0) { in task_create()
563 panic("unable to insert task %d(%p)", tkid, (void *)tk); in task_create()
567 tk->tk_nprocs_kstat = task_kstat_create(tk, zone); in task_create()
568 return (tk); in task_create()
587 task_attach(task_t *tk, proc_t *p) in task_attach() argument
590 ASSERT(tk != NULL); in task_attach()
595 if (tk->tk_memb_list == NULL) { in task_attach()
599 first = tk->tk_memb_list; in task_attach()
606 tk->tk_memb_list = p; in task_attach()
607 task_hold(tk); in task_attach()
608 p->p_task = tk; in task_attach()
625 task_begin(task_t *tk, proc_t *p) in task_begin() argument
634 mutex_enter(&tk->tk_usage_lock); in task_begin()
635 tu = tk->tk_usage; in task_begin()
639 mutex_exit(&tk->tk_usage_lock); in task_begin()
644 task_attach(tk, p); in task_begin()
650 e.rcep_p.task = tk; in task_begin()
652 (void) rctl_set_dup(NULL, NULL, p, &e, tk->tk_rctls, NULL, in task_begin()
679 task_t *tk = p->p_task; in task_detach() local
684 ASSERT(tk->tk_memb_list != NULL); in task_detach()
686 if (tk->tk_memb_list == p) in task_detach()
687 tk->tk_memb_list = p->p_tasknext; in task_detach()
688 if (tk->tk_memb_list == p) in task_detach()
689 tk->tk_memb_list = NULL; in task_detach()
756 task_end(task_t *tk) in task_end() argument
758 ASSERT(tk->tk_hold_count == 0); in task_end()
760 project_rele(tk->tk_proj); in task_end()
761 kmem_free(tk->tk_usage, sizeof (task_usage_t)); in task_end()
762 kmem_free(tk->tk_inherited, sizeof (task_usage_t)); in task_end()
763 if (tk->tk_prevusage != NULL) in task_end()
764 kmem_free(tk->tk_prevusage, sizeof (task_usage_t)); in task_end()
765 if (tk->tk_zoneusage != NULL) in task_end()
766 kmem_free(tk->tk_zoneusage, sizeof (task_usage_t)); in task_end()
767 rctl_set_free(tk->tk_rctls); in task_end()
768 id_free(taskid_space, tk->tk_tkid); in task_end()
769 zone_task_rele(tk->tk_zone); in task_end()
770 kmem_cache_free(task_cache, tk); in task_end()
834 task_join(task_t *tk, uint_t flags) in task_join() argument
839 zone_t *zone = tk->tk_zone; in task_join()
840 projid_t projid = tk->tk_proj->kpj_id; in task_join()
892 task_change(tk, p); in task_join()
897 changeproj(p, tk->tk_proj, zone, projbuf, zonebuf); in task_join()
1038 task_t *tk = ksp->ks_private; in task_nprocs_kstat_update() local
1044 ktk->ktk_usage.value.ui64 = tk->tk_nprocs; in task_nprocs_kstat_update()
1045 ktk->ktk_value.value.ui64 = tk->tk_nprocs_ctl; in task_nprocs_kstat_update()
1050 task_kstat_create(task_t *tk, zone_t *zone) in task_kstat_create() argument
1056 ksp = rctl_kstat_create_task(tk, "nprocs", KSTAT_TYPE_NAMED, in task_kstat_create()
1070 ksp->ks_private = tk; in task_kstat_create()
1077 task_kstat_delete(task_t *tk) in task_kstat_delete() argument
1081 if (tk->tk_nprocs_kstat != NULL) { in task_kstat_delete()
1082 data = tk->tk_nprocs_kstat->ks_data; in task_kstat_delete()
1083 kstat_delete(tk->tk_nprocs_kstat); in task_kstat_delete()
1085 tk->tk_nprocs_kstat = NULL; in task_kstat_delete()
1118 task_t *tk; in task_commit() local
1120 tk = task_commit_head; in task_commit()
1125 exacct_commit_task(tk); in task_commit()