<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:΢ÈíÑźÚ
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
Hi :<BR>
&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if you write code as below:<BR>
&nbsp;<BR>
golbal int in1=0,int2=0;<BR>
&nbsp;<BR>
cpu1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cpu2:<BR>
&nbsp;<BR>
int1 = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b= int2;<BR>
smp_wmb()<BR>
int2 = 2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = in1;<BR>
&nbsp;<BR>
cpu2 may get the result: b==2 &amp; a==0 , which means although cpu1 set int1=1 before int2=2, there is no garentee for cpu2 to perceive int1 before int2.<BR>
you must add smp_rmb() inside cpu2 to prevent this.<BR>
&nbsp;<BR>
two cpus must cooperate to acheive the sequence memory order. <BR>
&nbsp;<BR>
&nbsp;<BR>
<BR>&nbsp;<BR>
<DIV>
&gt; Date: Fri, 9 Dec 2011 14:14:37 +0530<BR>&gt; Subject: Re: Memory barrier<BR>&gt; From: trisha1march@gmail.com<BR>&gt; To: buyit@live.cn<BR>&gt; CC: kernelnewbies@kernelnewbies.org<BR>&gt; <BR>&gt; I will add more info here:<BR>&gt; smp_mb()<BR>&gt; Similar to mb(), but only guarantees ordering between cores/processors<BR>&gt; within an SMP system. All memory accesses before the smp_mb() will be<BR>&gt; visible to all cores within the SMP system before any accesses after<BR>&gt; the smp_mb().<BR>&gt; smp_rmb()<BR>&gt; Like smp_mb(), but only guarantees ordering between read accesses.<BR>&gt; smp_wmb()<BR>&gt; Like smp_mb(), but only guarantees ordering between write accesses.<BR>&gt; <BR>&gt; So these made me total confuse .<BR>&gt; <BR>&gt; Thanks<BR>&gt; <BR>&gt; 2011/12/9 trisha yad &lt;trisha1march@gmail.com&gt;:<BR>&gt; &gt; Thanks,<BR>&gt; &gt;<BR>&gt; &gt; I got bit confuse with below statement:<BR>&gt; &gt; This is from paper Memory access ordering Part 2<BR>&gt; &gt; SMP conditional barriers<BR>&gt; &gt; The SMP conditional barriers are used to ensure a consistent view of<BR>&gt; &gt; memory between different cores within a cache coherent SMP system.<BR>&gt; &gt; When compiling a kernel without CONFIG_SMP, all SMP barriers are<BR>&gt; &gt; converted into plain compiler barriers.<BR>&gt; &gt;<BR>&gt; &gt; 2011/12/9 ²·ß®Ìì &lt;buyit@live.cn&gt;:<BR>&gt; &gt;&gt; Hi :<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; memory barriers can not make order on other cpus, only the current<BR>&gt; &gt;&gt; cpu's order will be promised.<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt;&gt; Date: Fri, 9 Dec 2011 12:54:40 +0530<BR>&gt; &gt;&gt;&gt; Subject: Memory barrier<BR>&gt; &gt;&gt;&gt; From: trisha1march@gmail.com<BR>&gt; &gt;&gt;&gt; To: Kernelnewbies@kernelnewbies.org<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; Hi All,<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; I need small clarification on memory barrier.<BR>&gt; &gt;&gt;&gt; #define smp_mb() mb()<BR>&gt; &gt;&gt;&gt; #define smp_rmb() rmb()<BR>&gt; &gt;&gt;&gt; #define smp_wmb() wmb()<BR>&gt; &gt;&gt;&gt; In case of SMP:<BR>&gt; &gt;&gt;&gt; is smp_mb() or smp_rmb() make order on current CPU or all cpu's<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; Thanks<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; _______________________________________________<BR>&gt; &gt;&gt;&gt; Kernelnewbies mailing list<BR>&gt; &gt;&gt;&gt; Kernelnewbies@kernelnewbies.org<BR>&gt; &gt;&gt;&gt; http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies<BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; Kernelnewbies mailing list<BR>&gt; Kernelnewbies@kernelnewbies.org<BR>&gt; http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies<BR></DIV>                                               </div></body>
</html>