From: Huang Ying <ying.huang@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Subject: Re: [PATCH -mm 1/2] irq_work, Use llist in irq_work
Date: Fri, 02 Sep 2011 09:14:26 +0800 [thread overview]
Message-ID: <4E602DF2.809@intel.com> (raw)
In-Reply-To: <1314871035.7945.14.camel@twins>
On 09/01/2011 05:57 PM, Peter Zijlstra wrote:
> On Thu, 2011-09-01 at 16:56 +0800, Huang Ying wrote:
>> Something as follow with llist_empty() seems not work.
>>
>> empty = llist_empty(irq_work_list);
>> llist_add(&work->llnode, irq_work_list);
>> if (empty)
>> arch_irq_work_raise();
>>
>> Because irq_work IRQ handler or timer IRQ handler may be executed just
>> before "llist_add(&work->llnode, irq_work_list)", so that, although
>> "empty == false", arch_irq_work_raise() still should be executed.
>
> Right, I was thinking:
>
> llist_add(&work->llist, irq_work_list);
> if (llist_empty(&work->llist))
> arch_irq_work_raise();
>
> And then ran into the difference between llist_node and llist_head. Now
> we could sort that by introducing llist_next() and write it like:
>
> if (!llist_next(&work->list))
> arch_irq_work_raise();
>
This reveals some implementation details of llist. But it will reveal
some implementation details to make llist_add() return whether list is
empty before adding as Mathieu pointed out. So I think something like
this or just to check work->list->next should be acceptable.
Best Regards,
Huang Ying
next prev parent reply other threads:[~2011-09-02 1:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-30 5:16 [PATCH -mm 0/2] Use llist in irq_work and xlist Huang Ying
2011-08-30 5:16 ` [PATCH -mm 1/2] irq_work, Use llist in irq_work Huang Ying
2011-08-31 10:10 ` Peter Zijlstra
2011-09-01 1:46 ` Huang Ying
2011-09-01 3:20 ` Huang Ying
2011-09-01 7:58 ` Peter Zijlstra
2011-09-01 8:56 ` Huang Ying
2011-09-01 9:57 ` Peter Zijlstra
2011-09-02 1:14 ` Huang Ying [this message]
2011-09-03 17:35 ` Mathieu Desnoyers
2011-09-01 12:51 ` Mathieu Desnoyers
2011-09-01 13:00 ` Mathieu Desnoyers
2011-09-02 1:08 ` Huang Ying
2011-09-03 16:33 ` Mathieu Desnoyers
2011-09-01 7:57 ` Peter Zijlstra
2011-09-01 8:44 ` Huang Ying
2011-09-01 10:00 ` Peter Zijlstra
2011-09-02 1:18 ` Huang Ying
2011-09-02 13:26 ` Peter Zijlstra
2011-08-30 5:16 ` [PATCH -mm 2/2] net, rds, Replace xlist in net/rds/xlist.h with llist Huang Ying
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=4E602DF2.809@intel.com \
--to=ying.huang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=peterz@infradead.org \
/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.