Reserve zero as an invalid DSM handle.
authorRobert Haas <rhaas@postgresql.org>
Tue, 15 Nov 2016 21:30:35 +0000 (16:30 -0500)
committerRobert Haas <rhaas@postgresql.org>
Tue, 15 Nov 2016 21:33:29 +0000 (16:33 -0500)
commitb40b4dd9e10ea701c8d47ccba9407fc32ed384e5
tree97a6bd5f4ba10dcecd8a0f3900c4cbe37be8dbd5
parent0a7481930c788e9d74a154aac0c8b401fc6a81f9
Reserve zero as an invalid DSM handle.

Previously, the handle for the control segment could not be zero, but
some other DSM segment could potentially have a handle value of zero.
However, that means that if someone wanted to store a dsm_handle that
might or might not be valid, they would need a separate boolean to
keep track of whether the associated value is legal.  That's annoying,
so change things so that no DSM segment can ever have a handle of 0 -
or as we call it here, DSM_HANDLE_INVALID.

Thomas Munro.  This was submitted as part of a much larger patch to
add an malloc-like allocator for dynamic shared memory, but this part
seems like a good idea independently of the rest of the patch.
src/backend/storage/ipc/dsm.c
src/include/storage/dsm.h