[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pserialize(9) vs. TAILQ
I think I understand the context. membar_consumer() can be omitted
because forward list iteration is (happen to be) "dependent-load"
(except on Alpha).
My confusion came from that I thought memory ordering of load is more
flexible in general. I also didn't quite understand "dependent-load".
I have been only reading NetBSD kernel code to learn memory ordering;
and I believe, nothing in the tree utilize this topologycal
"dependent-load". I may be missing something though.
On Mon, Nov 24, 2014 at 11:21 PM, Taylor R Campbell
> Date: Mon, 24 Nov 2014 21:44:11 +0900
> From: Masao Uebayashi <uebayasi%gmail.com@localhost>
> - TAILQ_REMOVE() will work (except on Alpha)
> - TAILQ_INSERT_*() will not (on Alpha and some others)
> - TAILQ_INSERT_*() need membar_producer()
> - TAILQ_FOREACH() needs membar_consumer()
> - TAILQ_REMOVE works as is everywhere (unless you enable QUEUEDEBUG).
> - TAILQ_INSERT_* need membar_producer everywhere.
> - TAILQ_FOREACH needs membar_consumer on alpha.
> To clarify this situation, I added _PSZ versions of all of these in
> the patch I sent earlier that will
> (a) do the right thing everywhere, and
> (b) mark where you're sharing a queue with pserialize.
I'm still not sure what part is really specific to pserialize(9) or not.
Main Index |
Thread Index |