Re: [RFC][PATCH] signal: replace !likely with unlikely!
On 09/13/2014 03:04 AM, Richard Weinberger wrote: Am 13.09.2014 04:48, schrieb Li RongQing: I did not test, how to test it? Compare the object files of both variants to find out whether both create semantically equivalent code and whether the un/likely have an effect. i.e. objdump -S -d kernel/signal.o I guess you can just remove the likely as gcc is smart enough to detect the "goto ret;" as an unlikely taken branch. Or just write similar test code and observe the result. When you are doing that, you might learn that if "(!likely(expression))" is _not_ the same as "if (unlikely(!expression))". Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
Am 13.09.2014 04:48, schrieb Li RongQing: > I did not test, how to test it? Compare the object files of both variants to find out whether both create semantically equivalent code and whether the un/likely have an effect. i.e. objdump -S -d kernel/signal.o I guess you can just remove the likely as gcc is smart enough to detect the "goto ret;" as an unlikely taken branch. Thanks, //richard -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
Am 13.09.2014 04:48, schrieb Li RongQing: I did not test, how to test it? Compare the object files of both variants to find out whether both create semantically equivalent code and whether the un/likely have an effect. i.e. objdump -S -d kernel/signal.o I guess you can just remove the likely as gcc is smart enough to detect the goto ret; as an unlikely taken branch. Thanks, //richard -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
On 09/13/2014 03:04 AM, Richard Weinberger wrote: Am 13.09.2014 04:48, schrieb Li RongQing: I did not test, how to test it? Compare the object files of both variants to find out whether both create semantically equivalent code and whether the un/likely have an effect. i.e. objdump -S -d kernel/signal.o I guess you can just remove the likely as gcc is smart enough to detect the goto ret; as an unlikely taken branch. Or just write similar test code and observe the result. When you are doing that, you might learn that if (!likely(expression)) is _not_ the same as if (unlikely(!expression)). Guenter -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
I did not test, how to test it? On Fri, Sep 12, 2014 at 3:18 AM, Guenter Roeck wrote: > On Thu, Sep 11, 2014 at 08:48:16AM +0800, roy.qing...@gmail.com wrote: >> From: Li RongQing >> >> !likely() is hard to be understood, and I do not know if compiler can >> optimise this condition, but unlikely(!()) is clear >> >> Signed-off-by: Li RongQing >> --- >> kernel/signal.c |2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/kernel/signal.c b/kernel/signal.c >> index 8f0876f..6156cfa 100644 >> --- a/kernel/signal.c >> +++ b/kernel/signal.c >> @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct >> task_struct *t, int group) >> BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); >> >> ret = -1; >> - if (!likely(lock_task_sighand(t, ))) >> + if (unlikely(!lock_task_sighand(t, ))) > > I wonder if you tested this code. Seems to be unlikely (punt not intended). > > Guenter > >> goto ret; >> >> ret = 1; /* the signal is ignored */ >> -- >> 1.7.10.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majord...@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ >> >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
I did not test, how to test it? On Fri, Sep 12, 2014 at 3:18 AM, Guenter Roeck li...@roeck-us.net wrote: On Thu, Sep 11, 2014 at 08:48:16AM +0800, roy.qing...@gmail.com wrote: From: Li RongQing roy.qing...@gmail.com !likely() is hard to be understood, and I do not know if compiler can optimise this condition, but unlikely(!()) is clear Signed-off-by: Li RongQing roy.qing...@gmail.com --- kernel/signal.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/signal.c b/kernel/signal.c index 8f0876f..6156cfa 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) BUG_ON(!(q-flags SIGQUEUE_PREALLOC)); ret = -1; - if (!likely(lock_task_sighand(t, flags))) + if (unlikely(!lock_task_sighand(t, flags))) I wonder if you tested this code. Seems to be unlikely (punt not intended). Guenter goto ret; ret = 1; /* the signal is ignored */ -- 1.7.10.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
On Thu, Sep 11, 2014 at 08:48:16AM +0800, roy.qing...@gmail.com wrote: > From: Li RongQing > > !likely() is hard to be understood, and I do not know if compiler can > optimise this condition, but unlikely(!()) is clear > > Signed-off-by: Li RongQing > --- > kernel/signal.c |2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/signal.c b/kernel/signal.c > index 8f0876f..6156cfa 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct > task_struct *t, int group) > BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); > > ret = -1; > - if (!likely(lock_task_sighand(t, ))) > + if (unlikely(!lock_task_sighand(t, ))) I wonder if you tested this code. Seems to be unlikely (punt not intended). Guenter > goto ret; > > ret = 1; /* the signal is ignored */ > -- > 1.7.10.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC][PATCH] signal: replace !likely with unlikely!
On Thu, Sep 11, 2014 at 08:48:16AM +0800, roy.qing...@gmail.com wrote: From: Li RongQing roy.qing...@gmail.com !likely() is hard to be understood, and I do not know if compiler can optimise this condition, but unlikely(!()) is clear Signed-off-by: Li RongQing roy.qing...@gmail.com --- kernel/signal.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/signal.c b/kernel/signal.c index 8f0876f..6156cfa 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) BUG_ON(!(q-flags SIGQUEUE_PREALLOC)); ret = -1; - if (!likely(lock_task_sighand(t, flags))) + if (unlikely(!lock_task_sighand(t, flags))) I wonder if you tested this code. Seems to be unlikely (punt not intended). Guenter goto ret; ret = 1; /* the signal is ignored */ -- 1.7.10.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[RFC][PATCH] signal: replace !likely with unlikely!
From: Li RongQing !likely() is hard to be understood, and I do not know if compiler can optimise this condition, but unlikely(!()) is clear Signed-off-by: Li RongQing --- kernel/signal.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/signal.c b/kernel/signal.c index 8f0876f..6156cfa 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); ret = -1; - if (!likely(lock_task_sighand(t, ))) + if (unlikely(!lock_task_sighand(t, ))) goto ret; ret = 1; /* the signal is ignored */ -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[RFC][PATCH] signal: replace !likely with unlikely!
From: Li RongQing roy.qing...@gmail.com !likely() is hard to be understood, and I do not know if compiler can optimise this condition, but unlikely(!()) is clear Signed-off-by: Li RongQing roy.qing...@gmail.com --- kernel/signal.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/signal.c b/kernel/signal.c index 8f0876f..6156cfa 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1571,7 +1571,7 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) BUG_ON(!(q-flags SIGQUEUE_PREALLOC)); ret = -1; - if (!likely(lock_task_sighand(t, flags))) + if (unlikely(!lock_task_sighand(t, flags))) goto ret; ret = 1; /* the signal is ignored */ -- 1.7.10.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/