/*------------------------------------------------------------------------- * * pidfile.h * Declarations describing the data directory lock file (postmaster.pid) * * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pidfile.h * *------------------------------------------------------------------------- */ #ifndef UTILS_PIDFILE_H #define UTILS_PIDFILE_H /* * As of Postgres 10, the contents of the data-directory lock file are: * * line # * 1 postmaster PID (or negative of a standalone backend's PID) * 2 data directory path * 3 postmaster start timestamp (time_t representation) * 4 port number * 5 first Unix socket directory path (empty if none) * 6 first listen_address (IP address or "*"; empty if no TCP port) * 7 shared memory key (empty on Windows) * 8 postmaster status (see values below) * * Lines 6 and up are added via AddToDataDirLockFile() after initial file * creation; also, line 5 is initially empty and is changed after the first * Unix socket is opened. Onlookers should not assume that lines 4 and up * are filled in any particular order. * * Socket lock file(s), if used, have the same contents as lines 1-5, with * line 5 being their own directory. */ #define LOCK_FILE_LINE_PID 1 #define LOCK_FILE_LINE_DATA_DIR 2 #define LOCK_FILE_LINE_START_TIME 3 #define LOCK_FILE_LINE_PORT 4 #define LOCK_FILE_LINE_SOCKET_DIR 5 #define LOCK_FILE_LINE_LISTEN_ADDR 6 #define LOCK_FILE_LINE_SHMEM_KEY 7 #define LOCK_FILE_LINE_PM_STATUS 8 /* * The PM_STATUS line may contain one of these values. All these strings * must be the same length, per comments for AddToDataDirLockFile(). * We pad with spaces as needed to make that true. */ #define PM_STATUS_STARTING "starting" /* still starting up */ #define PM_STATUS_STOPPING "stopping" /* in shutdown sequence */ #define PM_STATUS_READY "ready " /* ready for connections */ #define PM_STATUS_STANDBY "standby " /* up, won't accept connections */ #endif /* UTILS_PIDFILE_H */