1. 2008年 9月 24日 1 次提交
  2. 2008年 9月 11日 2 次提交
  3. 2008年 9月 09日 1 次提交
  4. 2008年 9月 03日 4 次提交
  5. 2008年 8月 29日 1 次提交
  6. 2008年 8月 28日 2 次提交
  7. 2008年 8月 22日 2 次提交
  8. 2008年 8月 21日 5 次提交
  9. 2007年 12月 21日 1 次提交
  10. 2007年 11月 29日 3 次提交
  11. 2007年 10月 21日 1 次提交
  12. 2007年 10月 12日 1 次提交
  13. 2007年 10月 02日 1 次提交
  14. 2007年 9月 30日 2 次提交
    • rsc's avatar
      Re: why cpuid() in locking code? · 9fd9f804
      rsc 提交于
      rtm wrote:
      > Why does acquire() call cpuid()? Why does release() call cpuid()?
      
      The cpuid in acquire is redundant with the cmpxchg, as you said.
      I have removed the cpuid from acquire.
      
      The cpuid in release is actually doing something important,
      but not on the hardware.  It keeps gcc from reordering the
      lock->locked assignment above the other two during optimization.
      (Not that current gcc -O2 would choose to do that, but it is allowed to.)
      I have replaced the cpuid in release with a "gcc barrier" that
      keeps gcc from moving things around but has no hardware effect.
      
      On a related note, I don't think the cpuid in mpmain is necessary,
      for the same reason that the cpuid wasn't needed in release.
      
      As to the question of whether
      
        acquire();
        x = protected;
        release();
      
      might read protected after release(), I still haven't convinced
      myself whether it can.  I'll put the cpuid back into release if
      we determine that it can.
      
      Russ
      9fd9f804
    • rsc's avatar
      tricks · c840f3ec
      rsc 提交于
      c840f3ec
  15. 2007年 9月 28日 13 次提交