From: Tejun Heo <tj@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Samu Onkalo <samu.p.onkalo@nokia.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] workqueues: microoptimize set_wq_data()
Date: Thu, 25 Feb 2010 12:10:28 +0900 [thread overview]
Message-ID: <4B85EA24.5020409@kernel.org> (raw)
In-Reply-To: <20100224202035.GA26991@redhat.com>
On 02/25/2010 05:20 AM, Oleg Nesterov wrote:
> The comment correctly states that the _PENDING bit must be set and
> we even have the BUG_ON() check. But this means there is no need to
> set WORK_STRUCT_PENDING explicitely and load work_data_bits() twice,
> we can rely on WORK_STRUCT_FLAG_MASK which contains _PENDING.
>
> Shaves 32 bytes from workqueue.o.
>
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>
> ---
>
> kernel/workqueue.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> --- wq/kernel/workqueue.c~2_CLEANUP_SET_DATA 2010-02-24 20:55:53.000000000 +0100
> +++ wq/kernel/workqueue.c 2010-02-24 20:58:37.000000000 +0100
> @@ -220,12 +220,9 @@ struct cpu_workqueue_struct *wq_per_cpu(
> static inline void set_wq_data(struct work_struct *work,
> struct cpu_workqueue_struct *cwq)
> {
> - unsigned long new;
> -
> - BUG_ON(!work_pending(work));
> -
> - new = (unsigned long) cwq | (1UL << WORK_STRUCT_PENDING);
> + unsigned long new = (unsigned long)cwq;
> new |= WORK_STRUCT_FLAG_MASK & *work_data_bits(work);
> + BUG_ON(!(new & (1UL << WORK_STRUCT_PENDING)));
> atomic_long_set(&work->data, new);
Will apply under cmwq patches for the next merge window.
Thanks.
--
tejun
next prev parent reply other threads:[~2010-02-25 3:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-24 20:20 [PATCH 2/3] workqueues: microoptimize set_wq_data() Oleg Nesterov
2010-02-25 3:10 ` Tejun Heo [this message]
2010-02-25 10:27 ` Tejun Heo
2010-02-25 13:55 ` Oleg Nesterov
2010-02-25 15:16 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B85EA24.5020409@kernel.org \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=samu.p.onkalo@nokia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.