Question about memory barriers

From: Alan Stern
Date: Thu Feb 02 2006 - 16:10:37 EST


The kernel's documentation about memory barriers is rather skimpy. I
gather that rmb() guarantees that all preceding reads will have completed
before any following reads are made, and wmb() guarantees that all
preceding writes will have completed before any following writes are made.
I also gather that mb() is essentially the same as rmb() and wmb() put
together.

But suppose I need to prevent a read from being moved past a write? It
doesn't look like either rmb() or wmb() will do this. And if mb() is the
same as "rmb(); wmb();" then it won't either. So what's the right thing
to do?

Alan Stern

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/