]> granicus.if.org Git - postgresql/commit
Adjust spin.c's spinlock emulation so that 0 is not a valid spinlock value.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 16 Apr 2016 23:53:38 +0000 (19:53 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 16 Apr 2016 23:53:38 +0000 (19:53 -0400)
commit4039c736eb0955cb1daf88e211f105dbbb78f7ea
treef7b97a487f996c824fbce1f68d2fd368453d9bda
parent5fdda1ceab35311367ed0dbb283cd8aea896e49b
Adjust spin.c's spinlock emulation so that 0 is not a valid spinlock value.

We've had repeated troubles over the years with failures to initialize
spinlocks correctly; see 6b93fcd14 for a recent example.  Most of the time,
on most platforms, such oversights can escape notice because all-zeroes is
the expected initial content of an slock_t variable.  The only platform
we have where the initialized state of an slock_t isn't zeroes is HPPA,
and that's practically gone in the wild.  To make it easier to catch such
errors without needing one of those, adjust the --disable-spinlocks code
so that zero is not a valid value for an slock_t for it.

In passing, remove a bunch of unnecessary #include's from spin.c;
commit daa7527afc227443 removed all the intermodule coupling that
made them necessary.
src/backend/storage/lmgr/spin.c