Lines Matching refs:tk

341 	task_t *tk;
346 (mod_hash_val_t *)&tk) == MH_ERR_NOTFOUND ||
347 (zoneid != ALL_ZONES && zoneid != tk->tk_zone->zone_id))
350 return (tk);
372 task_t *tk;
375 if ((tk = task_find(id, zoneid)) != NULL)
376 atomic_inc_32(&tk->tk_hold_count);
379 return (tk);
407 task_hold(task_t *tk)
409 atomic_inc_32(&tk->tk_hold_count);
428 task_rele(task_t *tk)
431 if (atomic_add_32_nv(&tk->tk_hold_count, -1) > 0) {
436 ASSERT(tk->tk_nprocs == 0);
438 mutex_enter(&tk->tk_zone->zone_nlwps_lock);
439 tk->tk_proj->kpj_ntasks--;
440 mutex_exit(&tk->tk_zone->zone_nlwps_lock);
442 task_kstat_delete(tk);
445 (mod_hash_key_t)(uintptr_t)tk->tk_tkid) != 0)
446 panic("unable to delete task %d", tk->tk_tkid);
457 if (taskq_dispatch(exacct_queue, exacct_commit_task, tk,
461 task_commit_head = task_commit_tail = tk;
463 task_commit_tail->tk_commit_next = tk;
464 task_commit_tail = tk;
490 task_t *tk = kmem_cache_alloc(task_cache, KM_SLEEP);
499 bzero(tk, sizeof (task_t));
501 tk->tk_tkid = tkid = id_alloc(taskid_space);
502 tk->tk_nlwps = 0;
503 tk->tk_nlwps_ctl = INT_MAX;
504 tk->tk_nprocs = 0;
505 tk->tk_nprocs_ctl = INT_MAX;
506 tk->tk_usage = tu;
507 tk->tk_inherited = kmem_zalloc(sizeof (task_usage_t), KM_SLEEP);
508 tk->tk_proj = project_hold_by_id(projid, zone, PROJECT_HOLD_INSERT);
509 tk->tk_flags = TASK_NORMAL;
510 tk->tk_commit_next = NULL;
519 tk->tk_zone = zone;
539 e.rcep_p.task = tk;
541 tk->tk_rctls = rctl_set_dup(ancestor_tk->tk_rctls, curproc, curproc, &e,
560 (mod_hash_val_t *)tk, hndl) != 0) {
562 panic("unable to insert task %d(%p)", tkid, (void *)tk);
566 tk->tk_nprocs_kstat = task_kstat_create(tk, zone);
567 return (tk);
586 task_attach(task_t *tk, proc_t *p)
589 ASSERT(tk != NULL);
594 if (tk->tk_memb_list == NULL) {
598 first = tk->tk_memb_list;
605 tk->tk_memb_list = p;
606 task_hold(tk);
607 p->p_task = tk;
624 task_begin(task_t *tk, proc_t *p)
633 mutex_enter(&tk->tk_usage_lock);
634 tu = tk->tk_usage;
638 mutex_exit(&tk->tk_usage_lock);
643 task_attach(tk, p);
649 e.rcep_p.task = tk;
651 (void) rctl_set_dup(NULL, NULL, p, &e, tk->tk_rctls, NULL,
678 task_t *tk = p->p_task;
683 ASSERT(tk->tk_memb_list != NULL);
685 if (tk->tk_memb_list == p)
686 tk->tk_memb_list = p->p_tasknext;
687 if (tk->tk_memb_list == p)
688 tk->tk_memb_list = NULL;
755 task_end(task_t *tk)
757 ASSERT(tk->tk_hold_count == 0);
759 project_rele(tk->tk_proj);
760 kmem_free(tk->tk_usage, sizeof (task_usage_t));
761 kmem_free(tk->tk_inherited, sizeof (task_usage_t));
762 if (tk->tk_prevusage != NULL)
763 kmem_free(tk->tk_prevusage, sizeof (task_usage_t));
764 if (tk->tk_zoneusage != NULL)
765 kmem_free(tk->tk_zoneusage, sizeof (task_usage_t));
766 rctl_set_free(tk->tk_rctls);
767 id_free(taskid_space, tk->tk_tkid);
768 zone_task_rele(tk->tk_zone);
769 kmem_cache_free(task_cache, tk);
833 task_join(task_t *tk, uint_t flags)
838 zone_t *zone = tk->tk_zone;
839 projid_t projid = tk->tk_proj->kpj_id;
891 task_change(tk, p);
896 changeproj(p, tk->tk_proj, zone, projbuf, zonebuf);
1037 task_t *tk = ksp->ks_private;
1043 ktk->ktk_usage.value.ui64 = tk->tk_nprocs;
1044 ktk->ktk_value.value.ui64 = tk->tk_nprocs_ctl;
1049 task_kstat_create(task_t *tk, zone_t *zone)
1055 ksp = rctl_kstat_create_task(tk, "nprocs", KSTAT_TYPE_NAMED,
1069 ksp->ks_private = tk;
1076 task_kstat_delete(task_t *tk)
1080 if (tk->tk_nprocs_kstat != NULL) {
1081 data = tk->tk_nprocs_kstat->ks_data;
1082 kstat_delete(tk->tk_nprocs_kstat);
1084 tk->tk_nprocs_kstat = NULL;
1117 task_t *tk;
1119 tk = task_commit_head;
1124 exacct_commit_task(tk);