|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <signal.h>#include <unistd.h>#include "miscadmin.h"#include "postmaster/postmaster.h"#include "replication/walsender.h"#include "storage/ipc.h"#include "storage/pmsignal.h"#include "storage/shmem.h"#include "utils/memutils.h"
Go to the source code of this file.
Data Structures | |
| struct | PMSignalData |
Macros | |
| #define | PM_CHILD_UNUSED 0 /* these values must fit in sig_atomic_t */ |
| #define | PM_CHILD_ASSIGNED 1 |
| #define | PM_CHILD_ACTIVE 2 |
| #define | PM_CHILD_WALSENDER 3 |
Functions | |
| static void | MarkPostmasterChildInactive (int code, Datum arg) |
| Size | PMSignalShmemSize (void) |
| void | PMSignalShmemInit (void) |
| void | SendPostmasterSignal (PMSignalReason reason) |
| bool | CheckPostmasterSignal (PMSignalReason reason) |
| void | SetQuitSignalReason (QuitSignalReason reason) |
| QuitSignalReason | GetQuitSignalReason (void) |
| void | MarkPostmasterChildSlotAssigned (int slot) |
| bool | MarkPostmasterChildSlotUnassigned (int slot) |
| bool | IsPostmasterChildWalSender (int slot) |
| void | RegisterPostmasterChildActive (void) |
| void | MarkPostmasterChildWalSender (void) |
| bool | PostmasterIsAliveInternal (void) |
| void | PostmasterDeathSignalInit (void) |
Variables | |
| NON_EXEC_STATIC volatile PMSignalData * | PMSignalState = NULL |
| static int | num_child_flags |
| #define PM_CHILD_ACTIVE 2 |
Definition at line 68 of file pmsignal.c.
| #define PM_CHILD_ASSIGNED 1 |
Definition at line 67 of file pmsignal.c.
| #define PM_CHILD_UNUSED 0 /* these values must fit in sig_atomic_t */ |
Definition at line 66 of file pmsignal.c.
| #define PM_CHILD_WALSENDER 3 |
Definition at line 69 of file pmsignal.c.
| bool CheckPostmasterSignal | ( | PMSignalReason | reason | ) |
Definition at line 182 of file pmsignal.c.
References PMSignalData::PMSignalFlags, and PMSignalState.
Referenced by process_pm_pmsignal().
| QuitSignalReason GetQuitSignalReason | ( | void | ) |
Definition at line 213 of file pmsignal.c.
References IsUnderPostmaster, PMQUIT_NOT_SENT, PMSignalState, and PMSignalData::sigquit_reason.
Referenced by quickdie().
| bool IsPostmasterChildWalSender | ( | int | slot | ) |
Definition at line 271 of file pmsignal.c.
References Assert(), num_child_flags, PM_CHILD_WALSENDER, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by CountChildren(), and SignalChildren().
|
static |
Definition at line 326 of file pmsignal.c.
References Assert(), MyPMChildSlot, num_child_flags, PM_CHILD_ACTIVE, PM_CHILD_ASSIGNED, PM_CHILD_WALSENDER, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by RegisterPostmasterChildActive().
| void MarkPostmasterChildSlotAssigned | ( | int | slot | ) |
Definition at line 230 of file pmsignal.c.
References Assert(), elog, FATAL, num_child_flags, PM_CHILD_ASSIGNED, PM_CHILD_UNUSED, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by AssignPostmasterChildSlot().
| bool MarkPostmasterChildSlotUnassigned | ( | int | slot | ) |
Definition at line 249 of file pmsignal.c.
References Assert(), num_child_flags, PM_CHILD_ASSIGNED, PM_CHILD_UNUSED, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by ReleasePostmasterChildSlot().
| void MarkPostmasterChildWalSender | ( | void | ) |
Definition at line 309 of file pmsignal.c.
References am_walsender, Assert(), MyPMChildSlot, num_child_flags, PM_CHILD_ACTIVE, PM_CHILD_WALSENDER, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by InitWalSender().
| void PMSignalShmemInit | ( | void | ) |
Definition at line 145 of file pmsignal.c.
References MaxLivePostmasterChildren(), MemSet, PMSignalData::num_child_flags, num_child_flags, PMSignalShmemSize(), PMSignalState, ShmemInitStruct(), and unvolatize.
Referenced by CreateOrAttachShmemStructs().
| Size PMSignalShmemSize | ( | void | ) |
Definition at line 130 of file pmsignal.c.
References add_size(), MaxLivePostmasterChildren(), and mul_size().
Referenced by CalculateShmemSize(), and PMSignalShmemInit().
| void PostmasterDeathSignalInit | ( | void | ) |
Definition at line 407 of file pmsignal.c.
References elog, ERROR, and pqsignal.
Referenced by InitPostmasterChild().
| bool PostmasterIsAliveInternal | ( | void | ) |
Definition at line 346 of file pmsignal.c.
References EAGAIN, elog, EWOULDBLOCK, FATAL, postmaster_alive_fds, POSTMASTER_FD_WATCH, and read.
Referenced by WaitEventSetWaitBlock().
| void RegisterPostmasterChildActive | ( | void | ) |
Definition at line 290 of file pmsignal.c.
References Assert(), MarkPostmasterChildInactive(), MyPMChildSlot, num_child_flags, on_shmem_exit(), PM_CHILD_ACTIVE, PM_CHILD_ASSIGNED, PMSignalData::PMChildFlags, and PMSignalState.
Referenced by InitAuxiliaryProcess(), and InitProcess().
| void SendPostmasterSignal | ( | PMSignalReason | reason | ) |
Definition at line 165 of file pmsignal.c.
References IsUnderPostmaster, kill, PMSignalData::PMSignalFlags, PMSignalState, PostmasterPid, and SIGUSR1.
Referenced by AutoVacLauncherMain(), CheckpointerMain(), CheckRecoveryConsistency(), do_start_worker(), GetNewMultiXactId(), GetNewTransactionId(), InitWalSender(), PerformWalRecovery(), pg_rotate_logfile(), RegisterDynamicBackgroundWorker(), RequestXLogStreaming(), SetMultiXactIdLimit(), SetTransactionIdLimit(), and TerminateBackgroundWorker().
| void SetQuitSignalReason | ( | QuitSignalReason | reason | ) |
Definition at line 202 of file pmsignal.c.
References PMSignalState, and PMSignalData::sigquit_reason.
Referenced by HandleFatalError(), and process_pm_shutdown_request().
|
static |
Definition at line 91 of file pmsignal.c.
Referenced by IsPostmasterChildWalSender(), MarkPostmasterChildInactive(), MarkPostmasterChildSlotAssigned(), MarkPostmasterChildSlotUnassigned(), MarkPostmasterChildWalSender(), PMSignalShmemInit(), and RegisterPostmasterChildActive().
| NON_EXEC_STATIC volatile PMSignalData* PMSignalState = NULL |
Definition at line 84 of file pmsignal.c.
Referenced by CheckPostmasterSignal(), GetQuitSignalReason(), IsPostmasterChildWalSender(), MarkPostmasterChildInactive(), MarkPostmasterChildSlotAssigned(), MarkPostmasterChildSlotUnassigned(), MarkPostmasterChildWalSender(), PMSignalShmemInit(), RegisterPostmasterChildActive(), SendPostmasterSignal(), and SetQuitSignalReason().