/*-------------------------------------------------------------------- * Symbols referenced in this file: * - CritSectionCount * - ExitOnAnyError * - InterruptHoldoffCount * - QueryCancelHoldoffCount * - IsPostmasterEnvironment * - InterruptPending *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * globals.c * global variable declarations * * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/init/globals.c * * NOTES * Globals used all over the place should be declared here and not * in other modules. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "libpq/libpq-be.h" #include "libpq/pqcomm.h" #include "miscadmin.h" #include "storage/backendid.h" __thread volatile bool InterruptPending = false; __thread volatile uint32 InterruptHoldoffCount = 0; __thread volatile uint32 QueryCancelHoldoffCount = 0; __thread volatile uint32 CritSectionCount = 0; /* * MyLatch points to the latch that should be used for signal handling by the * current process. It will either point to a process local latch if the * current process does not have a PGPROC entry in that moment, or to * PGPROC->procLatch if it has. Thus it can always be used in signal handlers, * without checking for its existence. */ /* * DataDir is the absolute path to the top level of the PGDATA directory tree. * Except during early startup, this is also the server's working directory; * most code therefore can simply use relative paths and not reference DataDir * explicitly. */ /* debugging output file */ /* full path to my executable */ /* full path to lib directory */ #ifdef EXEC_BACKEND char postgres_exec_path[MAXPGPATH]; /* full path to backend */ /* note: currently this is not valid in backend processes */ #endif /* * DatabasePath is the path (relative to DataDir) of my database's * primary directory, ie, its directory in the default tablespace. */ /* * IsPostmasterEnvironment is true in a postmaster process and any postmaster * child process; it is false in a standalone process (bootstrap or * standalone backend). IsUnderPostmaster is true in postmaster child * processes. Note that "child process" includes all children, not only * regular backends. These should be set correctly as early as possible * in the execution of a process, so that error handling will do the right * things if an error should occur during process initialization. * * These are initialized for the bootstrap/standalone case. */ __thread bool IsPostmasterEnvironment = false; __thread bool ExitOnAnyError = false; /* * Primary determinants of sizes of shared-memory structures. * * MaxBackends is computed by PostmasterMain after modules have had a chance to * register background workers. */ /* GUC parameters for vacuum */ /* working state for vacuum */