• 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
名称
最后提交
最后更新
.cvsignore 正在载入提交数据...
BUGS 正在载入提交数据...
Makefile 正在载入提交数据...
Notes 正在载入提交数据...
README 正在载入提交数据...
TRICKS 正在载入提交数据...
asm.h 正在载入提交数据...
bio.c 正在载入提交数据...
bootasm.S 正在载入提交数据...
bootmain.c 正在载入提交数据...
bootother.S 正在载入提交数据...
buf.h 正在载入提交数据...
cat.c 正在载入提交数据...
console.c 正在载入提交数据...
cuth 正在载入提交数据...
defs.h 正在载入提交数据...
dev.h 正在载入提交数据...
dot-bochsrc 正在载入提交数据...
echo.c 正在载入提交数据...
elf.h 正在载入提交数据...
exec.c 正在载入提交数据...
fcntl.h 正在载入提交数据...
file.c 正在载入提交数据...
file.h 正在载入提交数据...
forktest.c 正在载入提交数据...
fs.c 正在载入提交数据...
fs.h 正在载入提交数据...
fsvar.h 正在载入提交数据...
grep.c 正在载入提交数据...
ide.c 正在载入提交数据...
init.c 正在载入提交数据...
initcode.S 正在载入提交数据...
ioapic.c 正在载入提交数据...
kalloc.c 正在载入提交数据...
kbd.c 正在载入提交数据...
kbd.h 正在载入提交数据...
kill.c 正在载入提交数据...
lapic.c 正在载入提交数据...
ln.c 正在载入提交数据...
ls.c 正在载入提交数据...
main.c 正在载入提交数据...
mkdir.c 正在载入提交数据...
mkfs.c 正在载入提交数据...
mmu.h 正在载入提交数据...
mp.c 正在载入提交数据...
mp.h 正在载入提交数据...
param.h 正在载入提交数据...
picirq.c 正在载入提交数据...
pipe.c 正在载入提交数据...
pr.pl 正在载入提交数据...
printf.c 正在载入提交数据...
proc.c 正在载入提交数据...
proc.h 正在载入提交数据...
rm.c 正在载入提交数据...
runoff 正在载入提交数据...
runoff.list 正在载入提交数据...
runoff.spec 正在载入提交数据...
runoff1 正在载入提交数据...
sh.c 正在载入提交数据...
show1 正在载入提交数据...
sign.pl 正在载入提交数据...
spinlock.c 正在载入提交数据...
spinlock.h 正在载入提交数据...
stat.h 正在载入提交数据...
string.c 正在载入提交数据...
swtch.S 正在载入提交数据...
symlink.patch 正在载入提交数据...
syscall.c 正在载入提交数据...
syscall.h 正在载入提交数据...
sysfile.c 正在载入提交数据...
sysproc.c 正在载入提交数据...
timer.c 正在载入提交数据...
toc.ftr 正在载入提交数据...
toc.hdr 正在载入提交数据...
trap.c 正在载入提交数据...
trapasm.S 正在载入提交数据...
traps.h 正在载入提交数据...
types.h 正在载入提交数据...
ulib.c 正在载入提交数据...
umalloc.c 正在载入提交数据...
user.h 正在载入提交数据...
usertests.c 正在载入提交数据...
usys.S 正在载入提交数据...
vectors.pl 正在载入提交数据...
wc.c 正在载入提交数据...
x86.h 正在载入提交数据...
xv6-rev0.tar.gz 正在载入提交数据...
xv6-rev1.tar.gz 正在载入提交数据...
xv6.pdf 正在载入提交数据...
xv6.ps 正在载入提交数据...
zombie.c 正在载入提交数据...