Add a crude facility for dealing with relative pointers

Enterprise / PostgreSQL - Robert Haas [postgresql.org] - 2 December 2016 10:29 UTC

C doesn't have any sort of built-in understanding of a pointer relative to some arbitrary base address, but dynamic shared memory segments can be mapped at different addresses in different processes, so any sort of shared data structure stored within a dynamic shared memory segment can't use absolute pointers. We could use something like Size to represent a relative pointer, but then the compiler provides no type-checking. Use stupid macro tricks to get some type-checking.

Patch originally by me. Concept suggested by Andres Freund. Recently resubmitted as part of Thomas Munro's work on dynamic shared memory allocation.

Discussion: 20131205144434.GG12398@alap2.anarazel.de Discussion: CAEepm=1z5WLuNoJ80PaCvz6EtG9dN0j-KuHcHtU6QEfcPP5-qA@mail.gmail.com

fbc1c12 Add a crude facility for dealing with relative pointers.
src/include/utils/relptr.h | 74 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 74 insertions(+)

Upstream: git.postgresql.org


  • Share