All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it.
@ 2014-03-05 12:36 Dongsheng Yang
  2014-03-05 12:36 ` [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable Dongsheng Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-05 12:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: fweisbec, rostedt, peterz, mingo, Dongsheng Yang

Function task_nice() was reimplemented as inline function, we can use it here
to replace the open coded implementation.

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
cc: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/trace.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 815c878..dba0e3d 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1003,7 +1003,7 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
 	else
 		max_data->uid = task_uid(tsk);
 
-	max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
+	max_data->nice = task_nice(tsk);
 	max_data->policy = tsk->policy;
 	max_data->rt_priority = tsk->rt_priority;
 
-- 
1.8.2.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable.
  2014-03-05 12:36 [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
@ 2014-03-05 12:36 ` Dongsheng Yang
  2014-03-05 15:17   ` Joe Perches
  2014-03-05 12:36 ` [PATCH 3/3] sched/prio: Replace hardcoding of 40 with NICE_WIDTH Dongsheng Yang
  2014-03-11  5:04 ` [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
  2 siblings, 1 reply; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-05 12:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: fweisbec, rostedt, peterz, mingo, Dongsheng Yang

As Kees suggested, I use clamp() function to replace the if and
else branch, making it more readable and modular.

Suggested-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
 kernel/sched/core.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index ee8004c..5273037 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3070,17 +3070,10 @@ SYSCALL_DEFINE1(nice, int, increment)
 	 * We don't have to worry. Conceptually one call occurs first
 	 * and we have a single winner.
 	 */
-	if (increment < -40)
-		increment = -40;
-	if (increment > 40)
-		increment = 40;
-
+	increment = clamp(increment, -40, 40);
 	nice = task_nice(current) + increment;
-	if (nice < MIN_NICE)
-		nice = MIN_NICE;
-	if (nice > MAX_NICE)
-		nice = MAX_NICE;
 
+	nice = clamp_val(nice, MIN_NICE, MAX_NICE);
 	if (increment < 0 && !can_nice(current, nice))
 		return -EPERM;
 
-- 
1.8.2.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/3] sched/prio: Replace hardcoding of 40 with NICE_WIDTH.
  2014-03-05 12:36 [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
  2014-03-05 12:36 ` [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable Dongsheng Yang
@ 2014-03-05 12:36 ` Dongsheng Yang
  2014-03-10 22:23   ` [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1 Joe Perches
  2014-03-11  5:04 ` [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
  2 siblings, 1 reply; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-05 12:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: fweisbec, rostedt, peterz, mingo, Dongsheng Yang

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
 kernel/sched/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 5273037..7ed08ad 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3070,7 +3070,7 @@ SYSCALL_DEFINE1(nice, int, increment)
 	 * We don't have to worry. Conceptually one call occurs first
 	 * and we have a single winner.
 	 */
-	increment = clamp(increment, -40, 40);
+	increment = clamp(increment, -NICE_WIDTH, NICE_WIDTH);
 	nice = task_nice(current) + increment;
 
 	nice = clamp_val(nice, MIN_NICE, MAX_NICE);
-- 
1.8.2.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable.
  2014-03-05 12:36 ` [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable Dongsheng Yang
@ 2014-03-05 15:17   ` Joe Perches
  2014-03-05 15:26     ` Steven Rostedt
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2014-03-05 15:17 UTC (permalink / raw)
  To: Dongsheng Yang; +Cc: linux-kernel, fweisbec, rostedt, peterz, mingo, Kees Cook

On Wed, 2014-03-05 at 20:36 +0800, Dongsheng Yang wrote:
> As Kees suggested, I use clamp() function to replace the if and
> else branch, making it more readable and modular.
> 
> Suggested-by: Kees Cook <keescook@chromium.org>
> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
[]
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
[]
> @@ -3070,17 +3070,10 @@ SYSCALL_DEFINE1(nice, int, increment)
>  	 * We don't have to worry. Conceptually one call occurs first
>  	 * and we have a single winner.
>  	 */
> -	if (increment < -40)
> -		increment = -40;
> -	if (increment > 40)
> -		increment = 40;
> -
> +	increment = clamp(increment, -40, 40);

Maybe:

	increment = clamp(increment, -(NICE_MAX - NICE_MIN + 1), 
				   , NICE_MAX - NICE_MIN + 1)

or add yet another define like #define NICE_RANGE
or #define NICE_MAX_INCREMENT


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable.
  2014-03-05 15:17   ` Joe Perches
@ 2014-03-05 15:26     ` Steven Rostedt
  2014-03-05 15:29       ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Steven Rostedt @ 2014-03-05 15:26 UTC (permalink / raw)
  To: Joe Perches
  Cc: Dongsheng Yang, linux-kernel, fweisbec, peterz, mingo, Kees Cook

On Wed, 05 Mar 2014 07:17:36 -0800
Joe Perches <joe@perches.com> wrote:

> On Wed, 2014-03-05 at 20:36 +0800, Dongsheng Yang wrote:
> > As Kees suggested, I use clamp() function to replace the if and
> > else branch, making it more readable and modular.
> > 
> > Suggested-by: Kees Cook <keescook@chromium.org>
> > Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
> []
> > diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> []
> > @@ -3070,17 +3070,10 @@ SYSCALL_DEFINE1(nice, int, increment)
> >  	 * We don't have to worry. Conceptually one call occurs first
> >  	 * and we have a single winner.
> >  	 */
> > -	if (increment < -40)
> > -		increment = -40;
> > -	if (increment > 40)
> > -		increment = 40;
> > -
> > +	increment = clamp(increment, -40, 40);
> 
> Maybe:
> 
> 	increment = clamp(increment, -(NICE_MAX - NICE_MIN + 1), 
> 				   , NICE_MAX - NICE_MIN + 1)

Ug, that's much harder to read.

> 
> or add yet another define like #define NICE_RANGE
> or #define NICE_MAX_INCREMENT

Sure, if there's a NICE_MAX_INC == 40, then we could do:

	increment = clamp(increment, -NICE_MAX_INC, NICE_MAX_INC);

-- Steve

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable.
  2014-03-05 15:26     ` Steven Rostedt
@ 2014-03-05 15:29       ` Joe Perches
  0 siblings, 0 replies; 11+ messages in thread
From: Joe Perches @ 2014-03-05 15:29 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Dongsheng Yang, linux-kernel, fweisbec, peterz, mingo, Kees Cook

On Wed, 2014-03-05 at 10:26 -0500, Steven Rostedt wrote:
> On Wed, 05 Mar 2014 07:17:36 -0800 Joe Perches <joe@perches.com> wrote:
[]
> > or add yet another define like #define NICE_RANGE
> > or #define NICE_MAX_INCREMENT
> 
> Sure, if there's a NICE_MAX_INC == 40, then we could do:
> 
> 	increment = clamp(increment, -NICE_MAX_INC, NICE_MAX_INC);

Apologies for the noise.
He did that in the next patch.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1
  2014-03-05 12:36 ` [PATCH 3/3] sched/prio: Replace hardcoding of 40 with NICE_WIDTH Dongsheng Yang
@ 2014-03-10 22:23   ` Joe Perches
  2014-03-11  1:17     ` Dongsheng Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2014-03-10 22:23 UTC (permalink / raw)
  To: Dongsheng Yang; +Cc: linux-kernel, fweisbec, rostedt, peterz, mingo

Convert the use of 20 to NICE_MAX + 1.

Reduce the indent the switch case labels while there.

git diff -w shows 3 lines changed and a /* fall-through */ comment added

  $ git diff -w -U0 kernel/sys.c
  @@ -253 +253 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
  -                               niceval = 20 - task_nice(p);
  +                       niceval = MAX_NICE - task_nice(p) + 1;
  @@ -264 +264 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
  -                               niceval = 20 - task_nice(p);
  +                       niceval = MAX_NICE - task_nice(p) + 1;
  @@ -280 +280 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
  -                                       niceval = 20 - task_nice(p);
  +                               niceval = MAX_NICE - task_nice(p) + 1;
  @@ -1558 +1558 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r)
  -
  +               /* fall-through */

Signed-off-by: Joe Perches <joe@perches.com>
---
 kernel/sys.c | 206 +++++++++++++++++++++++++++++------------------------------
 1 file changed, 103 insertions(+), 103 deletions(-)

diff --git a/kernel/sys.c b/kernel/sys.c
index fba0f29..0bd5fe9 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -182,39 +182,39 @@ SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval)
 	rcu_read_lock();
 	read_lock(&tasklist_lock);
 	switch (which) {
-		case PRIO_PROCESS:
-			if (who)
-				p = find_task_by_vpid(who);
-			else
-				p = current;
-			if (p)
-				error = set_one_prio(p, niceval, error);
-			break;
-		case PRIO_PGRP:
-			if (who)
-				pgrp = find_vpid(who);
-			else
-				pgrp = task_pgrp(current);
-			do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
+	case PRIO_PROCESS:
+		if (who)
+			p = find_task_by_vpid(who);
+		else
+			p = current;
+		if (p)
+			error = set_one_prio(p, niceval, error);
+		break;
+	case PRIO_PGRP:
+		if (who)
+			pgrp = find_vpid(who);
+		else
+			pgrp = task_pgrp(current);
+		do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
+			error = set_one_prio(p, niceval, error);
+		} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
+		break;
+	case PRIO_USER:
+		uid = make_kuid(cred->user_ns, who);
+		user = cred->user;
+		if (!who)
+			uid = cred->uid;
+		else if (!uid_eq(uid, cred->uid) &&
+			 !(user = find_user(uid)))
+			goto out_unlock;	/* No processes for this user */
+
+		do_each_thread(g, p) {
+			if (uid_eq(task_uid(p), uid))
 				error = set_one_prio(p, niceval, error);
-			} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
-			break;
-		case PRIO_USER:
-			uid = make_kuid(cred->user_ns, who);
-			user = cred->user;
-			if (!who)
-				uid = cred->uid;
-			else if (!uid_eq(uid, cred->uid) &&
-				 !(user = find_user(uid)))
-				goto out_unlock;	/* No processes for this user */
-
-			do_each_thread(g, p) {
-				if (uid_eq(task_uid(p), uid))
-					error = set_one_prio(p, niceval, error);
-			} while_each_thread(g, p);
-			if (!uid_eq(uid, cred->uid))
-				free_uid(user);		/* For find_user() */
-			break;
+		} while_each_thread(g, p);
+		if (!uid_eq(uid, cred->uid))
+			free_uid(user);		/* For find_user() */
+		break;
 	}
 out_unlock:
 	read_unlock(&tasklist_lock);
@@ -244,47 +244,47 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
 	rcu_read_lock();
 	read_lock(&tasklist_lock);
 	switch (which) {
-		case PRIO_PROCESS:
-			if (who)
-				p = find_task_by_vpid(who);
-			else
-				p = current;
-			if (p) {
-				niceval = 20 - task_nice(p);
+	case PRIO_PROCESS:
+		if (who)
+			p = find_task_by_vpid(who);
+		else
+			p = current;
+		if (p) {
+			niceval = MAX_NICE - task_nice(p) + 1;
+			if (niceval > retval)
+				retval = niceval;
+		}
+		break;
+	case PRIO_PGRP:
+		if (who)
+			pgrp = find_vpid(who);
+		else
+			pgrp = task_pgrp(current);
+		do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
+			niceval = MAX_NICE - task_nice(p) + 1;
+			if (niceval > retval)
+				retval = niceval;
+		} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
+		break;
+	case PRIO_USER:
+		uid = make_kuid(cred->user_ns, who);
+		user = cred->user;
+		if (!who)
+			uid = cred->uid;
+		else if (!uid_eq(uid, cred->uid) &&
+			 !(user = find_user(uid)))
+			goto out_unlock;	/* No processes for this user */
+
+		do_each_thread(g, p) {
+			if (uid_eq(task_uid(p), uid)) {
+				niceval = MAX_NICE - task_nice(p) + 1;
 				if (niceval > retval)
 					retval = niceval;
 			}
-			break;
-		case PRIO_PGRP:
-			if (who)
-				pgrp = find_vpid(who);
-			else
-				pgrp = task_pgrp(current);
-			do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
-				niceval = 20 - task_nice(p);
-				if (niceval > retval)
-					retval = niceval;
-			} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
-			break;
-		case PRIO_USER:
-			uid = make_kuid(cred->user_ns, who);
-			user = cred->user;
-			if (!who)
-				uid = cred->uid;
-			else if (!uid_eq(uid, cred->uid) &&
-				 !(user = find_user(uid)))
-				goto out_unlock;	/* No processes for this user */
-
-			do_each_thread(g, p) {
-				if (uid_eq(task_uid(p), uid)) {
-					niceval = 20 - task_nice(p);
-					if (niceval > retval)
-						retval = niceval;
-				}
-			} while_each_thread(g, p);
-			if (!uid_eq(uid, cred->uid))
-				free_uid(user);		/* for find_user() */
-			break;
+		} while_each_thread(g, p);
+		if (!uid_eq(uid, cred->uid))
+			free_uid(user);		/* for find_user() */
+		break;
 	}
 out_unlock:
 	read_unlock(&tasklist_lock);
@@ -1541,41 +1541,41 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r)
 		return;
 
 	switch (who) {
-		case RUSAGE_BOTH:
-		case RUSAGE_CHILDREN:
-			utime = p->signal->cutime;
-			stime = p->signal->cstime;
-			r->ru_nvcsw = p->signal->cnvcsw;
-			r->ru_nivcsw = p->signal->cnivcsw;
-			r->ru_minflt = p->signal->cmin_flt;
-			r->ru_majflt = p->signal->cmaj_flt;
-			r->ru_inblock = p->signal->cinblock;
-			r->ru_oublock = p->signal->coublock;
-			maxrss = p->signal->cmaxrss;
-
-			if (who == RUSAGE_CHILDREN)
-				break;
-
-		case RUSAGE_SELF:
-			thread_group_cputime_adjusted(p, &tgutime, &tgstime);
-			utime += tgutime;
-			stime += tgstime;
-			r->ru_nvcsw += p->signal->nvcsw;
-			r->ru_nivcsw += p->signal->nivcsw;
-			r->ru_minflt += p->signal->min_flt;
-			r->ru_majflt += p->signal->maj_flt;
-			r->ru_inblock += p->signal->inblock;
-			r->ru_oublock += p->signal->oublock;
-			if (maxrss < p->signal->maxrss)
-				maxrss = p->signal->maxrss;
-			t = p;
-			do {
-				accumulate_thread_rusage(t, r);
-			} while_each_thread(p, t);
+	case RUSAGE_BOTH:
+	case RUSAGE_CHILDREN:
+		utime = p->signal->cutime;
+		stime = p->signal->cstime;
+		r->ru_nvcsw = p->signal->cnvcsw;
+		r->ru_nivcsw = p->signal->cnivcsw;
+		r->ru_minflt = p->signal->cmin_flt;
+		r->ru_majflt = p->signal->cmaj_flt;
+		r->ru_inblock = p->signal->cinblock;
+		r->ru_oublock = p->signal->coublock;
+		maxrss = p->signal->cmaxrss;
+
+		if (who == RUSAGE_CHILDREN)
 			break;
+		/* fall-through */
+	case RUSAGE_SELF:
+		thread_group_cputime_adjusted(p, &tgutime, &tgstime);
+		utime += tgutime;
+		stime += tgstime;
+		r->ru_nvcsw += p->signal->nvcsw;
+		r->ru_nivcsw += p->signal->nivcsw;
+		r->ru_minflt += p->signal->min_flt;
+		r->ru_majflt += p->signal->maj_flt;
+		r->ru_inblock += p->signal->inblock;
+		r->ru_oublock += p->signal->oublock;
+		if (maxrss < p->signal->maxrss)
+			maxrss = p->signal->maxrss;
+		t = p;
+		do {
+			accumulate_thread_rusage(t, r);
+		} while_each_thread(p, t);
+		break;
 
-		default:
-			BUG();
+	default:
+		BUG();
 	}
 	unlock_task_sighand(p, &flags);
 



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1
  2014-03-10 22:23   ` [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1 Joe Perches
@ 2014-03-11  1:17     ` Dongsheng Yang
  2014-03-11  2:21       ` Joe Perches
  0 siblings, 1 reply; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-11  1:17 UTC (permalink / raw)
  To: Joe Perches; +Cc: linux-kernel, fweisbec, rostedt, peterz, mingo

Hi Joe,

On 03/11/2014 06:23 AM, Joe Perches wrote:
> Convert the use of 20 to NICE_MAX + 1.

What about adding a macro in prio.h to convert nice value [19,-20] to 
rlimit
style value [1,40]?

It seems that it will be used in several places.

- Dongsheng
>
> Reduce the indent the switch case labels while there.
>
> git diff -w shows 3 lines changed and a /* fall-through */ comment added
>
>    $ git diff -w -U0 kernel/sys.c
>    @@ -253 +253 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
>    -                               niceval = 20 - task_nice(p);
>    +                       niceval = MAX_NICE - task_nice(p) + 1;
>    @@ -264 +264 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
>    -                               niceval = 20 - task_nice(p);
>    +                       niceval = MAX_NICE - task_nice(p) + 1;
>    @@ -280 +280 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
>    -                                       niceval = 20 - task_nice(p);
>    +                               niceval = MAX_NICE - task_nice(p) + 1;
>    @@ -1558 +1558 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r)
>    -
>    +               /* fall-through */
>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>   kernel/sys.c | 206 +++++++++++++++++++++++++++++------------------------------
>   1 file changed, 103 insertions(+), 103 deletions(-)
>
> diff --git a/kernel/sys.c b/kernel/sys.c
> index fba0f29..0bd5fe9 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
> @@ -182,39 +182,39 @@ SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval)
>   	rcu_read_lock();
>   	read_lock(&tasklist_lock);
>   	switch (which) {
> -		case PRIO_PROCESS:
> -			if (who)
> -				p = find_task_by_vpid(who);
> -			else
> -				p = current;
> -			if (p)
> -				error = set_one_prio(p, niceval, error);
> -			break;
> -		case PRIO_PGRP:
> -			if (who)
> -				pgrp = find_vpid(who);
> -			else
> -				pgrp = task_pgrp(current);
> -			do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
> +	case PRIO_PROCESS:
> +		if (who)
> +			p = find_task_by_vpid(who);
> +		else
> +			p = current;
> +		if (p)
> +			error = set_one_prio(p, niceval, error);
> +		break;
> +	case PRIO_PGRP:
> +		if (who)
> +			pgrp = find_vpid(who);
> +		else
> +			pgrp = task_pgrp(current);
> +		do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
> +			error = set_one_prio(p, niceval, error);
> +		} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
> +		break;
> +	case PRIO_USER:
> +		uid = make_kuid(cred->user_ns, who);
> +		user = cred->user;
> +		if (!who)
> +			uid = cred->uid;
> +		else if (!uid_eq(uid, cred->uid) &&
> +			 !(user = find_user(uid)))
> +			goto out_unlock;	/* No processes for this user */
> +
> +		do_each_thread(g, p) {
> +			if (uid_eq(task_uid(p), uid))
>   				error = set_one_prio(p, niceval, error);
> -			} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
> -			break;
> -		case PRIO_USER:
> -			uid = make_kuid(cred->user_ns, who);
> -			user = cred->user;
> -			if (!who)
> -				uid = cred->uid;
> -			else if (!uid_eq(uid, cred->uid) &&
> -				 !(user = find_user(uid)))
> -				goto out_unlock;	/* No processes for this user */
> -
> -			do_each_thread(g, p) {
> -				if (uid_eq(task_uid(p), uid))
> -					error = set_one_prio(p, niceval, error);
> -			} while_each_thread(g, p);
> -			if (!uid_eq(uid, cred->uid))
> -				free_uid(user);		/* For find_user() */
> -			break;
> +		} while_each_thread(g, p);
> +		if (!uid_eq(uid, cred->uid))
> +			free_uid(user);		/* For find_user() */
> +		break;
>   	}
>   out_unlock:
>   	read_unlock(&tasklist_lock);
> @@ -244,47 +244,47 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
>   	rcu_read_lock();
>   	read_lock(&tasklist_lock);
>   	switch (which) {
> -		case PRIO_PROCESS:
> -			if (who)
> -				p = find_task_by_vpid(who);
> -			else
> -				p = current;
> -			if (p) {
> -				niceval = 20 - task_nice(p);
> +	case PRIO_PROCESS:
> +		if (who)
> +			p = find_task_by_vpid(who);
> +		else
> +			p = current;
> +		if (p) {
> +			niceval = MAX_NICE - task_nice(p) + 1;
> +			if (niceval > retval)
> +				retval = niceval;
> +		}
> +		break;
> +	case PRIO_PGRP:
> +		if (who)
> +			pgrp = find_vpid(who);
> +		else
> +			pgrp = task_pgrp(current);
> +		do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
> +			niceval = MAX_NICE - task_nice(p) + 1;
> +			if (niceval > retval)
> +				retval = niceval;
> +		} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
> +		break;
> +	case PRIO_USER:
> +		uid = make_kuid(cred->user_ns, who);
> +		user = cred->user;
> +		if (!who)
> +			uid = cred->uid;
> +		else if (!uid_eq(uid, cred->uid) &&
> +			 !(user = find_user(uid)))
> +			goto out_unlock;	/* No processes for this user */
> +
> +		do_each_thread(g, p) {
> +			if (uid_eq(task_uid(p), uid)) {
> +				niceval = MAX_NICE - task_nice(p) + 1;
>   				if (niceval > retval)
>   					retval = niceval;
>   			}
> -			break;
> -		case PRIO_PGRP:
> -			if (who)
> -				pgrp = find_vpid(who);
> -			else
> -				pgrp = task_pgrp(current);
> -			do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
> -				niceval = 20 - task_nice(p);
> -				if (niceval > retval)
> -					retval = niceval;
> -			} while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
> -			break;
> -		case PRIO_USER:
> -			uid = make_kuid(cred->user_ns, who);
> -			user = cred->user;
> -			if (!who)
> -				uid = cred->uid;
> -			else if (!uid_eq(uid, cred->uid) &&
> -				 !(user = find_user(uid)))
> -				goto out_unlock;	/* No processes for this user */
> -
> -			do_each_thread(g, p) {
> -				if (uid_eq(task_uid(p), uid)) {
> -					niceval = 20 - task_nice(p);
> -					if (niceval > retval)
> -						retval = niceval;
> -				}
> -			} while_each_thread(g, p);
> -			if (!uid_eq(uid, cred->uid))
> -				free_uid(user);		/* for find_user() */
> -			break;
> +		} while_each_thread(g, p);
> +		if (!uid_eq(uid, cred->uid))
> +			free_uid(user);		/* for find_user() */
> +		break;
>   	}
>   out_unlock:
>   	read_unlock(&tasklist_lock);
> @@ -1541,41 +1541,41 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r)
>   		return;
>   
>   	switch (who) {
> -		case RUSAGE_BOTH:
> -		case RUSAGE_CHILDREN:
> -			utime = p->signal->cutime;
> -			stime = p->signal->cstime;
> -			r->ru_nvcsw = p->signal->cnvcsw;
> -			r->ru_nivcsw = p->signal->cnivcsw;
> -			r->ru_minflt = p->signal->cmin_flt;
> -			r->ru_majflt = p->signal->cmaj_flt;
> -			r->ru_inblock = p->signal->cinblock;
> -			r->ru_oublock = p->signal->coublock;
> -			maxrss = p->signal->cmaxrss;
> -
> -			if (who == RUSAGE_CHILDREN)
> -				break;
> -
> -		case RUSAGE_SELF:
> -			thread_group_cputime_adjusted(p, &tgutime, &tgstime);
> -			utime += tgutime;
> -			stime += tgstime;
> -			r->ru_nvcsw += p->signal->nvcsw;
> -			r->ru_nivcsw += p->signal->nivcsw;
> -			r->ru_minflt += p->signal->min_flt;
> -			r->ru_majflt += p->signal->maj_flt;
> -			r->ru_inblock += p->signal->inblock;
> -			r->ru_oublock += p->signal->oublock;
> -			if (maxrss < p->signal->maxrss)
> -				maxrss = p->signal->maxrss;
> -			t = p;
> -			do {
> -				accumulate_thread_rusage(t, r);
> -			} while_each_thread(p, t);
> +	case RUSAGE_BOTH:
> +	case RUSAGE_CHILDREN:
> +		utime = p->signal->cutime;
> +		stime = p->signal->cstime;
> +		r->ru_nvcsw = p->signal->cnvcsw;
> +		r->ru_nivcsw = p->signal->cnivcsw;
> +		r->ru_minflt = p->signal->cmin_flt;
> +		r->ru_majflt = p->signal->cmaj_flt;
> +		r->ru_inblock = p->signal->cinblock;
> +		r->ru_oublock = p->signal->coublock;
> +		maxrss = p->signal->cmaxrss;
> +
> +		if (who == RUSAGE_CHILDREN)
>   			break;
> +		/* fall-through */
> +	case RUSAGE_SELF:
> +		thread_group_cputime_adjusted(p, &tgutime, &tgstime);
> +		utime += tgutime;
> +		stime += tgstime;
> +		r->ru_nvcsw += p->signal->nvcsw;
> +		r->ru_nivcsw += p->signal->nivcsw;
> +		r->ru_minflt += p->signal->min_flt;
> +		r->ru_majflt += p->signal->maj_flt;
> +		r->ru_inblock += p->signal->inblock;
> +		r->ru_oublock += p->signal->oublock;
> +		if (maxrss < p->signal->maxrss)
> +			maxrss = p->signal->maxrss;
> +		t = p;
> +		do {
> +			accumulate_thread_rusage(t, r);
> +		} while_each_thread(p, t);
> +		break;
>   
> -		default:
> -			BUG();
> +	default:
> +		BUG();
>   	}
>   	unlock_task_sighand(p, &flags);
>   
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1
  2014-03-11  1:17     ` Dongsheng Yang
@ 2014-03-11  2:21       ` Joe Perches
  2014-03-11  2:35         ` Dongsheng Yang
  0 siblings, 1 reply; 11+ messages in thread
From: Joe Perches @ 2014-03-11  2:21 UTC (permalink / raw)
  To: Dongsheng Yang; +Cc: linux-kernel, fweisbec, rostedt, peterz, mingo

On Tue, 2014-03-11 at 09:17 +0800, Dongsheng Yang wrote:
> Hi Joe,
> 
> On 03/11/2014 06:23 AM, Joe Perches wrote:
> > Convert the use of 20 to NICE_MAX + 1.
> 
> What about adding a macro in prio.h to convert nice value [19,-20] to 
> rlimit
> style value [1,40]?
> 
> It seems that it will be used in several places.

Fine by me.  knock yourself out.

You might also consider changing these:

$ git grep -n -w -E "19|20"|grep -P "_nice" -i
drivers/block/loop.c:551:	set_user_nice(current, -20);
drivers/block/nbd.c:536:	set_user_nice(current, -20);
drivers/block/pktcdvd.c:1466:	set_user_nice(current, -20);
drivers/char/ipmi/ipmi_si_intf.c:1001:	set_user_nice(current, 19);
drivers/s390/crypto/ap_bus.c:1806:	set_user_nice(current, 19);
drivers/scsi/bnx2fc/bnx2fc_fcoe.c:467:	set_user_nice(current, -20);
drivers/scsi/bnx2fc/bnx2fc_fcoe.c:605:	set_user_nice(current, -20);
drivers/scsi/bnx2i/bnx2i_hwi.c:1873:	set_user_nice(current, -20);
drivers/scsi/fcoe/fcoe.c:1875:	set_user_nice(current, -20);
drivers/scsi/ibmvscsi/ibmvfc.c:4518:	set_user_nice(current, -20);
drivers/scsi/ibmvscsi/ibmvscsi.c:2216:	set_user_nice(current, -20);
drivers/scsi/lpfc/lpfc_hbadisc.c:736:	set_user_nice(current, -20);
drivers/scsi/qla2xxx/qla_os.c:4759:	set_user_nice(current, -20);
drivers/staging/android/binder.c:439:	min_nice = 20 - current->signal->rlim[RLIMIT_NICE].rlim_cur;
drivers/staging/android/binder.c:444:	if (min_nice < 20)
drivers/staging/lustre/lustre/llite/lloop.c:410:	set_user_nice(current, -20);
fs/ocfs2/cluster/heartbeat.c:1110:	set_user_nice(current, -20);
include/linux/ioprio.h:55:	return (task_nice(task) + 20) / 5;
include/linux/sched/prio.h:4:#define MAX_NICE	19
include/linux/sched/prio.h:5:#define MIN_NICE	-20
kernel/locking/locktorture.c:219:	set_user_nice(current, 19);
kernel/sys.c:253:				niceval = 20 - task_nice(p);
kernel/sys.c:264:				niceval = 20 - task_nice(p);
kernel/sys.c:280:					niceval = 20 - task_nice(p);
kernel/workqueue.c:105:	RESCUER_NICE_LEVEL	= -20,
kernel/workqueue.c:106:	HIGHPRI_NICE_LEVEL	= -20,
tools/testing/selftests/mqueue/mq_perf_tests.c:532:	cur_nice = -20;



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1
  2014-03-11  2:21       ` Joe Perches
@ 2014-03-11  2:35         ` Dongsheng Yang
  0 siblings, 0 replies; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-11  2:35 UTC (permalink / raw)
  To: Joe Perches; +Cc: linux-kernel, fweisbec, rostedt, peterz, mingo

On 03/11/2014 10:21 AM, Joe Perches wrote:
> On Tue, 2014-03-11 at 09:17 +0800, Dongsheng Yang wrote:
>> Hi Joe,
>>
>> On 03/11/2014 06:23 AM, Joe Perches wrote:
>>> Convert the use of 20 to NICE_MAX + 1.
>> What about adding a macro in prio.h to convert nice value [19,-20] to
>> rlimit
>> style value [1,40]?
>>
>> It seems that it will be used in several places.
> Fine by me.  knock yourself out.
>
> You might also consider changing these:

Yeah, my original plan is changing them from kernel/* to include/* then
to other subsystem such as driver, as I think I need to send them to 
different
ML and different maintainers. But I think it is time to complete it now,
and we should make these changes go into tip tree.

So I will send a patch set for them.

- Dongsheng
>
> $ git grep -n -w -E "19|20"|grep -P "_nice" -i
> drivers/block/loop.c:551:	set_user_nice(current, -20);
> drivers/block/nbd.c:536:	set_user_nice(current, -20);
> drivers/block/pktcdvd.c:1466:	set_user_nice(current, -20);
> drivers/char/ipmi/ipmi_si_intf.c:1001:	set_user_nice(current, 19);
> drivers/s390/crypto/ap_bus.c:1806:	set_user_nice(current, 19);
> drivers/scsi/bnx2fc/bnx2fc_fcoe.c:467:	set_user_nice(current, -20);
> drivers/scsi/bnx2fc/bnx2fc_fcoe.c:605:	set_user_nice(current, -20);
> drivers/scsi/bnx2i/bnx2i_hwi.c:1873:	set_user_nice(current, -20);
> drivers/scsi/fcoe/fcoe.c:1875:	set_user_nice(current, -20);
> drivers/scsi/ibmvscsi/ibmvfc.c:4518:	set_user_nice(current, -20);
> drivers/scsi/ibmvscsi/ibmvscsi.c:2216:	set_user_nice(current, -20);
> drivers/scsi/lpfc/lpfc_hbadisc.c:736:	set_user_nice(current, -20);
> drivers/scsi/qla2xxx/qla_os.c:4759:	set_user_nice(current, -20);
> drivers/staging/android/binder.c:439:	min_nice = 20 - current->signal->rlim[RLIMIT_NICE].rlim_cur;
> drivers/staging/android/binder.c:444:	if (min_nice < 20)
> drivers/staging/lustre/lustre/llite/lloop.c:410:	set_user_nice(current, -20);
> fs/ocfs2/cluster/heartbeat.c:1110:	set_user_nice(current, -20);
> include/linux/ioprio.h:55:	return (task_nice(task) + 20) / 5;
> include/linux/sched/prio.h:4:#define MAX_NICE	19
> include/linux/sched/prio.h:5:#define MIN_NICE	-20
> kernel/locking/locktorture.c:219:	set_user_nice(current, 19);
> kernel/sys.c:253:				niceval = 20 - task_nice(p);
> kernel/sys.c:264:				niceval = 20 - task_nice(p);
> kernel/sys.c:280:					niceval = 20 - task_nice(p);
> kernel/workqueue.c:105:	RESCUER_NICE_LEVEL	= -20,
> kernel/workqueue.c:106:	HIGHPRI_NICE_LEVEL	= -20,
> tools/testing/selftests/mqueue/mq_perf_tests.c:532:	cur_nice = -20;
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it.
  2014-03-05 12:36 [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
  2014-03-05 12:36 ` [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable Dongsheng Yang
  2014-03-05 12:36 ` [PATCH 3/3] sched/prio: Replace hardcoding of 40 with NICE_WIDTH Dongsheng Yang
@ 2014-03-11  5:04 ` Dongsheng Yang
  2 siblings, 0 replies; 11+ messages in thread
From: Dongsheng Yang @ 2014-03-11  5:04 UTC (permalink / raw)
  To: Dongsheng Yang; +Cc: linux-kernel, fweisbec, Steven Rostedt, peterz, mingo

Hi steve,
     Could you take these three patches if they looks fine to you??

Thanx

On 03/05/2014 08:36 PM, Dongsheng Yang wrote:
> Function task_nice() was reimplemented as inline function, we can use it here
> to replace the open coded implementation.
>
> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
> cc: Steven Rostedt <rostedt@goodmis.org>
> ---
>   kernel/trace/trace.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 815c878..dba0e3d 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -1003,7 +1003,7 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
>   	else
>   		max_data->uid = task_uid(tsk);
>   
> -	max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
> +	max_data->nice = task_nice(tsk);
>   	max_data->policy = tsk->policy;
>   	max_data->rt_priority = tsk->rt_priority;
>   


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-03-11  5:19 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-05 12:36 [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang
2014-03-05 12:36 ` [PATCH 2/3] sched: Use clamp() and clamp_val() to make it more readable Dongsheng Yang
2014-03-05 15:17   ` Joe Perches
2014-03-05 15:26     ` Steven Rostedt
2014-03-05 15:29       ` Joe Perches
2014-03-05 12:36 ` [PATCH 3/3] sched/prio: Replace hardcoding of 40 with NICE_WIDTH Dongsheng Yang
2014-03-10 22:23   ` [PATCH] kernel/sys: Replace hardcoding of 20 with MAX_NICE + 1 Joe Perches
2014-03-11  1:17     ` Dongsheng Yang
2014-03-11  2:21       ` Joe Perches
2014-03-11  2:35         ` Dongsheng Yang
2014-03-11  5:04 ` [PATCH 1/3] tracing: Use inline task_nice() to get rid of an open coded implementation of it Dongsheng Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.