Fixes bug in cpu_relax_vc()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 3 Oct 2014 01:09:38 +0000 (18:09 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 8 Oct 2014 05:55:13 +0000 (22:55 -0700)
commit0da72a545c39e1fdd0dc82261a2da45f3add9730
treed2c0bd8ec3b8a2f565fc23520a5cdd73e2c3ec3f
parent64d09534c22e3b7e0138ebee99a66b56bb3bcffb
Fixes bug in cpu_relax_vc()

It would never ensure the other vcores run, since spun would be reset on
every invocation.

Note that since it is a TLS variable, it gets reused each time and never
get reset.  So if a spinner calls cpu_relax_vc() 100 times before
grabbing its lock (or whatever), then the next time that vcore relaxes,
it'll start at 100.  Only 900 to go!

I'm okay with this - it's a little easier to deal with than having the
caller pass in the spin variable.
user/parlib/vcore.c