3739 }
3740
3741 memset(&ParmInfo, 0, sizeof(pcparms_t));
3742 ParmInfo.pc_cid = PC_CLNULL;
3743 rslt = (*priocntl_ptr)(PC_VERSION, P_LWPID, lwpid, PC_GETPARMS, (caddr_t)&ParmInfo);
3744 if (rslt < 0) return errno;
3745
3746 if (ParmInfo.pc_cid == rtLimits.schedPolicy) {
3747 rtparms_t *rtInfo = (rtparms_t*)ParmInfo.pc_clparms;
3748 rtInfo->rt_pri = scale_to_lwp_priority (rtLimits.minPrio, rtLimits.maxPrio, newPrio);
3749 rtInfo->rt_tqsecs = RT_NOCHANGE;
3750 rtInfo->rt_tqnsecs = RT_NOCHANGE;
3751 if (ThreadPriorityVerbose) {
3752 tty->print_cr("RT: %d->%d\n", newPrio, rtInfo->rt_pri);
3753 }
3754 } else if (ParmInfo.pc_cid == iaLimits.schedPolicy) {
3755 iaparms_t *iaInfo = (iaparms_t*)ParmInfo.pc_clparms;
3756 int maxClamped = MIN2(iaLimits.maxPrio, (int)iaInfo->ia_uprilim);
3757 iaInfo->ia_upri = scale_to_lwp_priority(iaLimits.minPrio, maxClamped, newPrio);
3758 iaInfo->ia_uprilim = IA_NOCHANGE;
3759 iaInfo->ia_nice = IA_NOCHANGE;
3760 iaInfo->ia_mode = IA_NOCHANGE;
3761 if (ThreadPriorityVerbose) {
3762 tty->print_cr ("IA: [%d...%d] %d->%d\n",
3763 iaLimits.minPrio, maxClamped, newPrio, iaInfo->ia_upri);
3764 }
3765 } else if (ParmInfo.pc_cid == tsLimits.schedPolicy) {
3766 tsparms_t *tsInfo = (tsparms_t*)ParmInfo.pc_clparms;
3767 int maxClamped = MIN2(tsLimits.maxPrio, (int)tsInfo->ts_uprilim);
3768 prv = tsInfo->ts_upri;
3769 tsInfo->ts_upri = scale_to_lwp_priority(tsLimits.minPrio, maxClamped, newPrio);
3770 tsInfo->ts_uprilim = IA_NOCHANGE;
3771 if (ThreadPriorityVerbose) {
3772 tty->print_cr ("TS: %d [%d...%d] %d->%d\n",
3773 prv, tsLimits.minPrio, maxClamped, newPrio, tsInfo->ts_upri);
3774 }
3775 if (prv == tsInfo->ts_upri) return 0;
3776 } else {
3777 if ( ThreadPriorityVerbose ) {
3778 tty->print_cr ("Unknown scheduling class\n");
3779 }
|
3739 }
3740
3741 memset(&ParmInfo, 0, sizeof(pcparms_t));
3742 ParmInfo.pc_cid = PC_CLNULL;
3743 rslt = (*priocntl_ptr)(PC_VERSION, P_LWPID, lwpid, PC_GETPARMS, (caddr_t)&ParmInfo);
3744 if (rslt < 0) return errno;
3745
3746 if (ParmInfo.pc_cid == rtLimits.schedPolicy) {
3747 rtparms_t *rtInfo = (rtparms_t*)ParmInfo.pc_clparms;
3748 rtInfo->rt_pri = scale_to_lwp_priority (rtLimits.minPrio, rtLimits.maxPrio, newPrio);
3749 rtInfo->rt_tqsecs = RT_NOCHANGE;
3750 rtInfo->rt_tqnsecs = RT_NOCHANGE;
3751 if (ThreadPriorityVerbose) {
3752 tty->print_cr("RT: %d->%d\n", newPrio, rtInfo->rt_pri);
3753 }
3754 } else if (ParmInfo.pc_cid == iaLimits.schedPolicy) {
3755 iaparms_t *iaInfo = (iaparms_t*)ParmInfo.pc_clparms;
3756 int maxClamped = MIN2(iaLimits.maxPrio, (int)iaInfo->ia_uprilim);
3757 iaInfo->ia_upri = scale_to_lwp_priority(iaLimits.minPrio, maxClamped, newPrio);
3758 iaInfo->ia_uprilim = IA_NOCHANGE;
3759 iaInfo->ia_mode = IA_NOCHANGE;
3760 if (ThreadPriorityVerbose) {
3761 tty->print_cr ("IA: [%d...%d] %d->%d\n",
3762 iaLimits.minPrio, maxClamped, newPrio, iaInfo->ia_upri);
3763 }
3764 } else if (ParmInfo.pc_cid == tsLimits.schedPolicy) {
3765 tsparms_t *tsInfo = (tsparms_t*)ParmInfo.pc_clparms;
3766 int maxClamped = MIN2(tsLimits.maxPrio, (int)tsInfo->ts_uprilim);
3767 prv = tsInfo->ts_upri;
3768 tsInfo->ts_upri = scale_to_lwp_priority(tsLimits.minPrio, maxClamped, newPrio);
3769 tsInfo->ts_uprilim = IA_NOCHANGE;
3770 if (ThreadPriorityVerbose) {
3771 tty->print_cr ("TS: %d [%d...%d] %d->%d\n",
3772 prv, tsLimits.minPrio, maxClamped, newPrio, tsInfo->ts_upri);
3773 }
3774 if (prv == tsInfo->ts_upri) return 0;
3775 } else {
3776 if ( ThreadPriorityVerbose ) {
3777 tty->print_cr ("Unknown scheduling class\n");
3778 }
|