Lines Matching refs:attr
1820 const struct sched_attr *attr, bool user) in uclamp_validate() argument
1827 trace_android_vh_uclamp_validate(p, attr, user, &ret, &done); in uclamp_validate()
1831 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MIN) { in uclamp_validate()
1832 util_min = attr->sched_util_min; in uclamp_validate()
1838 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MAX) { in uclamp_validate()
1839 util_max = attr->sched_util_max; in uclamp_validate()
1868 static bool uclamp_reset(const struct sched_attr *attr, in uclamp_reset() argument
1873 if (likely(!(attr->sched_flags & SCHED_FLAG_UTIL_CLAMP)) && in uclamp_reset()
1879 attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MIN && in uclamp_reset()
1880 attr->sched_util_min == -1) { in uclamp_reset()
1885 attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MAX && in uclamp_reset()
1886 attr->sched_util_max == -1) { in uclamp_reset()
1894 const struct sched_attr *attr) in __setscheduler_uclamp() argument
1902 if (!uclamp_reset(attr, clamp_id, uc_se)) in __setscheduler_uclamp()
1918 if (likely(!(attr->sched_flags & SCHED_FLAG_UTIL_CLAMP))) in __setscheduler_uclamp()
1921 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MIN && in __setscheduler_uclamp()
1922 attr->sched_util_min != -1) { in __setscheduler_uclamp()
1924 attr->sched_util_min, true); in __setscheduler_uclamp()
1925 trace_android_vh_setscheduler_uclamp(p, UCLAMP_MIN, attr->sched_util_min); in __setscheduler_uclamp()
1928 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MAX && in __setscheduler_uclamp()
1929 attr->sched_util_max != -1) { in __setscheduler_uclamp()
1931 attr->sched_util_max, true); in __setscheduler_uclamp()
1932 trace_android_vh_setscheduler_uclamp(p, UCLAMP_MAX, attr->sched_util_max); in __setscheduler_uclamp()
2004 const struct sched_attr *attr, bool user) in uclamp_validate() argument
2009 const struct sched_attr *attr) { } in __setscheduler_uclamp() argument
7425 const struct sched_attr *attr) in __setscheduler_params() argument
7427 int policy = attr->sched_policy; in __setscheduler_params()
7435 __setparam_dl(p, attr); in __setscheduler_params()
7437 p->static_prio = NICE_TO_PRIO(attr->sched_nice); in __setscheduler_params()
7444 p->rt_priority = attr->sched_priority; in __setscheduler_params()
7466 const struct sched_attr *attr, in __sched_setscheduler() argument
7469 int oldpolicy = -1, policy = attr->sched_policy; in __sched_setscheduler()
7487 reset_on_fork = !!(attr->sched_flags & SCHED_FLAG_RESET_ON_FORK); in __sched_setscheduler()
7493 if (attr->sched_flags & ~(SCHED_FLAG_ALL | SCHED_FLAG_SUGOV)) in __sched_setscheduler()
7501 if (attr->sched_priority > MAX_RT_PRIO-1) in __sched_setscheduler()
7503 if ((dl_policy(policy) && !__checkparam_dl(attr)) || in __sched_setscheduler()
7504 (rt_policy(policy) != (attr->sched_priority != 0))) in __sched_setscheduler()
7512 if (attr->sched_nice < task_nice(p) && in __sched_setscheduler()
7513 !can_nice(p, attr->sched_nice)) in __sched_setscheduler()
7526 if (attr->sched_priority > p->rt_priority && in __sched_setscheduler()
7527 attr->sched_priority > rlim_rtprio) in __sched_setscheduler()
7558 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) in __sched_setscheduler()
7563 if (attr->sched_flags & SCHED_FLAG_SUGOV) in __sched_setscheduler()
7572 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) { in __sched_setscheduler()
7573 retval = uclamp_validate(p, attr, user); in __sched_setscheduler()
7610 if (fair_policy(policy) && attr->sched_nice != task_nice(p)) in __sched_setscheduler()
7612 if (rt_policy(policy) && attr->sched_priority != p->rt_priority) in __sched_setscheduler()
7614 if (dl_policy(policy) && dl_param_changed(p, attr)) in __sched_setscheduler()
7616 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) in __sched_setscheduler()
7640 !(attr->sched_flags & SCHED_FLAG_SUGOV)) { in __sched_setscheduler()
7671 if ((dl_policy(policy) || dl_task(p)) && sched_dl_overflow(p, policy, attr)) { in __sched_setscheduler()
7679 newprio = __normal_prio(policy, attr->sched_priority, attr->sched_nice); in __sched_setscheduler()
7702 if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS)) { in __sched_setscheduler()
7703 __setscheduler_params(p, attr); in __sched_setscheduler()
7707 __setscheduler_uclamp(p, attr); in __sched_setscheduler()
7751 struct sched_attr attr = { in _sched_setscheduler() local
7759 attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK; in _sched_setscheduler()
7761 attr.sched_policy = policy; in _sched_setscheduler()
7764 return __sched_setscheduler(p, &attr, check, true); in _sched_setscheduler()
7785 int sched_setattr(struct task_struct *p, const struct sched_attr *attr) in sched_setattr() argument
7787 return __sched_setscheduler(p, attr, true, true); in sched_setattr()
7791 int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr) in sched_setattr_nocheck() argument
7793 return __sched_setscheduler(p, attr, false, true); in sched_setattr_nocheck()
7854 struct sched_attr attr = { in sched_set_normal() local
7858 WARN_ON_ONCE(sched_setattr_nocheck(p, &attr) != 0); in sched_set_normal()
7887 static int sched_copy_attr(struct sched_attr __user *uattr, struct sched_attr *attr) in sched_copy_attr() argument
7893 memset(attr, 0, sizeof(*attr)); in sched_copy_attr()
7905 ret = copy_struct_from_user(attr, sizeof(*attr), uattr, size); in sched_copy_attr()
7912 if ((attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) && in sched_copy_attr()
7920 attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE); in sched_copy_attr()
7925 put_user(sizeof(*attr), &uattr->size); in sched_copy_attr()
7929 static void get_params(struct task_struct *p, struct sched_attr *attr) in get_params() argument
7932 __getparam_dl(p, attr); in get_params()
7934 attr->sched_priority = p->rt_priority; in get_params()
7936 attr->sched_nice = task_nice(p); in get_params()
7976 struct sched_attr attr; in SYSCALL_DEFINE3() local
7983 retval = sched_copy_attr(uattr, &attr); in SYSCALL_DEFINE3()
7987 if ((int)attr.sched_policy < 0) in SYSCALL_DEFINE3()
7989 if (attr.sched_flags & SCHED_FLAG_KEEP_POLICY) in SYSCALL_DEFINE3()
7990 attr.sched_policy = SETPARAM_POLICY; in SYSCALL_DEFINE3()
8000 if (attr.sched_flags & SCHED_FLAG_KEEP_PARAMS) in SYSCALL_DEFINE3()
8001 get_params(p, &attr); in SYSCALL_DEFINE3()
8002 retval = sched_setattr(p, &attr); in SYSCALL_DEFINE3()
9897 struct sched_attr attr = { in normalize_rt_tasks() local
9924 __sched_setscheduler(p, &attr, false, false); in normalize_rt_tasks()