DONT_MIGRATE set more carefully
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Oct 2011 22:28:00 +0000 (15:28 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:08 +0000 (17:36 -0700)
commit6c7fb12d9b624d50edf77d7cc764f3cd0ecf1e6b
treeff8b775e5d94b87f704ffb62529ed9cd3073a94b
parent7143f4d3ecdc2cf615cbc46e96464cc5eaa39e06
DONT_MIGRATE set more carefully

It's held the entire time throughout an mcs_notif_safe lock, since it
doesn't make sense to migrate or otherwise try to restart/run that
thread (could be holding the lock, etc).

Also, after turning off DONT_MIGRATE, you need to check messages (which
enable_notifs() does).  This isn't critical right now, but future
patches will require it.  It's harmless to turn them on before
enable_notif(), since the protection it provides is in the process of
disabling notifs.  Once that is done, you won't get migrated anyways.

Finally, this makes sure we only do the DONT_MIGRATE / notif_disabling
business if we're in _M mode.  This wasn't pairing properly, and we were
getting our thread0 set with DONT_MIGRATE the first time it ran.
user/parlib/mcs.c
user/parlib/uthread.c