• Andres Freund's avatar
    Don't include low level locking code from frontend code. · 4eda0a64
    Andres Freund authored
    Some frontend code like e.g. pg_xlogdump or pg_resetxlog, has to use
    backend headers. Unfortunately until now that code includes most of the
    locking code. It's generally not nice to expose such low level details,
    but de6fd1c8 made that a hard problem. We fall back to defining
    'inline' away if the compiler doesn't support it - that can cause linker
    errors like on buildfarm animal pademelon if a inline function
    references backend only code.
    
    To fix that problem separate definitions from lock.h that are required
    from frontend code into lockdefs.h and use it in the relevant
    places. I've only removed the minimal amount of necessary definitions
    for now - it might turn out that we want more for other reasons.
    
    To avoid such details being exposed again put some checks against being
    included from frontend code into atomics.h, lock.h, lwlock.h and
    s_lock.h. It's otherwise fairly easy to indirectly include these
    headers.
    
    Discussion: 20150806070902.GE12214@awork2.anarazel.de
    4eda0a64
objectaddress.h 2.66 KB