Lines Matching refs:fssproj

247  *               fssproj
250 * the pset, and a list of fssproj's, corresponding to projects with runnable
251 * threads on the pset. fssproj's in turn point to the fsszone which they
674 * The following routine returns a pointer to the fssproj structure
681 fssproj_t *fssproj;
690 fssproj = fsspset->fssps_list;
692 if (fssproj->fssp_proj == kpj) {
693 ASSERT(fssproj->fssp_pset == fsspset);
694 return (fssproj);
696 fssproj = fssproj->fssp_next;
697 } while (fssproj != fsspset->fssps_list);
703 * The following routine links new fssproj structure into doubly linked list
708 fssproj_t *fssproj)
712 fssproj->fssp_pset = fsspset;
713 fssproj->fssp_proj = kpj;
714 fssproj->fssp_shares = kpj->kpj_shares;
720 * This will be the first fssproj for this fsspset
722 fssproj->fssp_next = fssproj->fssp_prev = fssproj;
723 fsspset->fssps_list = fssproj;
726 * Insert this fssproj to the doubly linked list.
730 fssproj->fssp_next = fssp_head;
731 fssproj->fssp_prev = fssp_head->fssp_prev;
732 fssp_head->fssp_prev->fssp_next = fssproj;
733 fssp_head->fssp_prev = fssproj;
734 fsspset->fssps_list = fssproj;
736 fssproj->fssp_fsszone = fsszone;
742 * The following routine removes a single fssproj structure from the doubly
744 * global fsspsets_lock must be held in case if this fssproj structure is the
745 * last on the above mentioned list. Also note that the fssproj structure is
750 fss_remove_fssproj(fsspset_t *fsspset, fssproj_t *fssproj)
756 ASSERT(fssproj->fssp_runnable == 0);
760 fsszone = fssproj->fssp_fsszone;
763 if (fssproj->fssp_next != fssproj) {
767 fssproj->fssp_prev->fssp_next = fssproj->fssp_next;
768 fssproj->fssp_next->fssp_prev = fssproj->fssp_prev;
769 if (fsspset->fssps_list == fssproj)
770 fsspset->fssps_list = fssproj->fssp_next;
790 fssproj_t *fssproj;
796 fssproj = FSSPROC2FSSPROJ(fssproc);
797 if (fssproj == NULL) /* if this thread already exited */
799 fsspset = FSSPROJ2FSSPSET(fssproj);
800 fsszone = fssproj->fssp_fsszone;
802 ASSERT(fssproj->fssp_runnable > 0);
803 if (--fssproj->fssp_runnable == 0) {
804 fsszone->fssz_shares -= fssproj->fssp_shares;
817 fssproj_t *fssproj;
823 fssproj = FSSPROC2FSSPROJ(fssproc);
824 if (fssproj == NULL) /* if this thread already exited */
826 fsspset = FSSPROJ2FSSPSET(fssproj);
827 fsszone = fssproj->fssp_fsszone;
829 if (++fssproj->fssp_runnable == 1) {
830 fsszone->fssz_shares += fssproj->fssp_shares;
932 fssproj_t *fssproj;
948 fssproj = FSSPROC2FSSPROJ(fssproc);
949 fsszone = FSSPROJ2FSSZONE(fssproj);
950 if (fssproj == NULL)
956 fsspset = FSSPROJ2FSSPSET(fssproj);
962 if (fssproj->fssp_shares == 0 || fsszone->fssz_rshares == 0) {
972 n_runnable = fssproj->fssp_runnable;
984 fsspri += fssproj->fssp_shusage * n_runnable * ticks;
1041 fssproj_t *fssproj;
1059 (fssproj = fsspset->fssps_list) == NULL) {
1079 fsszone = fssproj->fssp_fsszone;
1095 fssproj->fssp_usage =
1096 (fssproj->fssp_usage * FSS_DECAY_USG) /
1098 fssproj->fssp_ticks;
1100 fssproj->fssp_ticks = 0;
1101 zp->zone_run_ticks += fssproj->fssp_tick_cnt;
1102 fssproj->fssp_tick_cnt = 0;
1108 kpj_shares = fssproj->fssp_proj->kpj_shares;
1109 if (fssproj->fssp_shares != kpj_shares) {
1110 if (fssproj->fssp_runnable != 0) {
1112 fssproj->fssp_shares;
1115 fssproj->fssp_shares = kpj_shares;
1139 if (fssproj->fssp_runnable > 0) {
1155 fssproj->fssp_shr_pct = 0;
1162 fssproj->fssp_shr_pct =
1168 fssproj);
1176 fssproj->fssp_shusage = 0;
1177 } else if (FSSPROJ2KPROJ(fssproj) == proj0p) {
1192 fssproj->fssp_shr_pct = zone_shr_pct / 2;
1194 fssproj->fssp_shusage = (fssproj->fssp_usage *
1230 fssproj->fssp_shusage = fssproj->fssp_usage *
1232 fssproj->fssp_shusage /=
1234 fssproj->fssp_shusage *=
1236 fssproj->fssp_shusage /=
1239 fssproj = fssproj->fssp_next;
1240 } while (fssproj != fsspset->fssps_list);
1356 fssproj_t *fssproj;
1379 fssproj = FSSPROC2FSSPROJ(fssproc);
1380 if (fssproj == NULL)
1383 if (fssproj->fssp_shares != 0) {
1630 fssproj_t *fssproj;
1714 if ((fssproj = fss_find_fssproj(fsspset, kpj)) == NULL) {
1715 if ((fssproj = kmem_zalloc(sizeof (fssproj_t), KM_NOSLEEP))
1724 fss_insert_fssproj(fsspset, kpj, fsszone, fssproj);
1727 fssproj->fssp_threads++;
1728 fssproc->fss_proj = fssproj;
1772 fssproj_t *fssproj;
1796 fssproj = FSSPROC2FSSPROJ(fssproc);
1797 fsspset = FSSPROJ2FSSPSET(fssproj);
1798 fsszone = fssproj->fssp_fsszone;
1802 if (--fssproj->fssp_runnable == 0) {
1803 fsszone->fssz_shares -= fssproj->fssp_shares;
1813 if (--fssproj->fssp_threads == 0) {
1814 fss_remove_fssproj(fsspset, fssproj);
1817 kmem_free(fssproj, sizeof (fssproj_t));
1859 fssproj_t *fssproj;
1871 fssproj = FSSPROC2FSSPROJ(pfssproc);
1872 fsspset = FSSPROJ2FSSPSET(fssproj);
1880 ASSERT(FSSPROJ(pt) == fssproj);
1881 cfssproc->fss_proj = fssproj;
1897 fssproj->fssp_threads++;
2073 fssproj_t *fssproj;
2087 fssproj = FSSPROC2FSSPROJ(fssproc);
2088 fsspset = FSSPROJ2FSSPSET(fssproj);
2089 fsszone = fssproj->fssp_fsszone;
2097 if (--fssproj->fssp_runnable == 0) {
2098 fsszone->fssz_shares -= fssproj->fssp_shares;
2105 if (--fssproj->fssp_threads == 0) {
2106 fss_remove_fssproj(fsspset, fssproj);
2116 kmem_free(fssproj, sizeof (fssproj_t));
2477 fssproj_t *fssproj;
2485 * It's safe to access fsspset and fssproj structures because we're
2490 fssproj = FSSPROC2FSSPROJ(fssproc);
2491 if (fssproj != NULL) {
2492 fsspset_t *fsspset = FSSPROJ2FSSPSET(fssproj);
2494 fssproj->fssp_ticks += fss_nice_tick[fssproc->fss_nice];
2495 fssproj->fssp_tick_cnt++;